новые дистрибутивы вызывают деградацию сегмента старого двоичного кода

У меня пожилая (~ 1999) и, к сожалению, коммерческая графическая программа, которая отлично работает на системах с gcc до 3.4.6 (CentOS 4.8). Однако во всех дистрибутивах, основанных на gcc 4. *, которые я пробовал, программа не работает с «Ошибка сегментации» (я пробовал разные версии CenOS, Sebian и SUSE).

Есть более новые версии этого программного обеспечения (у нас даже есть лицензия) с множеством новых опций, поэтому для ежедневной работы мы хорошо обслуживаем. Однако у старого есть такая хорошая возможность экспортировать графику как x-графику, тогда как более новые версии – только PpenGL. Даже если x-graphic является уродливым (извините за это прилагательное), это намного быстрее, если вы работаете над DSL-линией.

Единственными библиотеками, которые отсутствовали во время установки, были: libXp.so.6, libXmu.so.6 и mesa3. Я установил их без проблем, используя стандартный репозиторий.

Я попытался strace эту ошибку, но после загрузки всех необходимых библиотек программа просто останавливается, не дав мне слишком много информации:

 open("/lib/libuuid.so.1", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\17\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=15200, ...}) = 0 mmap2(NULL, 17828, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfffffffff7464000 mmap2(0xf7468000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0xfffffffff7468000 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7463000 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7462000 set_thread_area(0xff8de9b4) = 0 mprotect(0xf746c000, 4096, PROT_READ) = 0 mprotect(0x439000, 8192, PROT_READ) = 0 mprotect(0xf74dc000, 4096, PROT_READ) = 0 mprotect(0xf763f000, 1032192, PROT_READ|PROT_WRITE) = 0 mprotect(0xf763f000, 1032192, PROT_READ|PROT_EXEC) = 0 --- SIGSEGV (Segmentation fault) @ 0 (0) --- +++ killed by SIGSEGV +++ Segmentation fault 

У кого-нибудь есть идеи, как заставить эту программу работать на новых дистрибутивах?

ps У меня нет источников для этого. Советуем использовать источник, Люк !! не будет работать для меня.

pss Для любопытных людей – программное обеспечение называется gaussview v2

Моим советом было бы установить более старый дистрибутив (CentOS 4, если это то, к чему вы привыкли) в chroot и запустить приложение там. Он будет использовать несколько ГБ дискового пространства, но это, вероятно, будет намного менее трудоемким, чем поиск способа сделать двоичную работу с текущими библиотеками.

У меня нет процедуры предложить вам установить CentOS в chroot. Инструкции по ручной установке должны быть хорошей отправной точкой – пропустите часть, чтобы сделать установку загрузочной и вместо нее установить chroot. Вы можете использовать schroot, чтобы сделать это проще ( учебник ).