Как определить, могу ли я запускать исполняемые файлы, скомпилированные для gcc4, на коробке? - PullRequest
0 голосов
/ 10 июля 2009

В производственном Linux-боксе без установленных средств разработки (например, без заголовков, без gcc) как выяснить, сможет ли он выполнить вещи:

  • скомпилировано в gcc4.1.2, а не в gcc3.3.3 (я думаю, что между версиями 3 и 4 произошло изменение ELF)
  • скомпилировано для 64-битных в отличие от 32-битных исполняемых файлов

У нас есть несколько устаревших библиотек, поэтому мы все еще используем gcc3.3.3, но переходим на gcc4.1.2, и коллега пытался выяснить, как обнаружить на новом удаленном компьютере, можем ли мы выполнить материал, скомпилированный с gcc4.

Могу ли я проверить конкретную версию библиотеки или ld-linux.so или что-то в этом роде вместо фактической компиляции тестового приложения с помощью gcc4, а затем попробовать запустить его на новом окне?

Ответы [ 3 ]

2 голосов
/ 10 июля 2009

Сгенерированный код должен работать нормально. Вы можете попробовать запустить ldd , поскольку он использует динамический компоновщик компьютера, вы можете увидеть, отсутствуют ли какие-либо библиотеки.

1 голос
/ 10 июля 2009

Я думаю, что проблемы, о которых вы говорите, связаны с GNU, а не с gcc. Был добавлен новый алгоритм хеширования для поиска символов. Вы должны скомпилировать все с помощью -Wl, - hash-style = both или -Wl, - hash-style = sysv (по умолчанию) в gcc4, тогда у вас не будет никаких проблем. По памяти Redhat был единственным дистрибутивом, достаточно отсталым для включения стиля хэша gnu по умолчанию.

Если это действительно ваша проблема, то вы можете сказать:

objdump -t foo | grep ".hash"

Который будет пустым, если не присутствует хеш sysv.

0 голосов
/ 24 августа 2009

Похоже, не существует простого способа взглянуть на версию некоторых библиотек, чтобы определить, будут ли двоичные файлы gcc4 работать без проблем.

У меня лично нет проблем с выполнением каких-либо проверок, упомянутых в других ответах, но я искал статичный способ определения этого, чтобы кто-то из моей команды мог установить флажок linux, не давая мне 30-минутную презентацию о том, как Linux должен работать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...