Как изменить информацию о версии файлов * .a после компиляции - PullRequest
2 голосов
/ 23 февраля 2010

Я хотел бы знать, каким образом (если это вообще возможно) изменить информацию о версии файлов * .a в Unix после компиляции. Я знаю, как сделать это для файлов Dll в Windows, но не знаю, как с этим справиться в Unix.

Спасибо всем!

Ответы [ 3 ]

3 голосов
/ 23 февраля 2010

Статические библиотеки - это просто архивы файлов .o - они сами не встраивают версию, если ваш код каким-то образом не публикует символ, содержащий информацию о версии.

Как:

int libFoo_version = 0x01000000;

Или вы можете использовать

char* libFoo_version = "1.0";

, а затем используйте что-то вроде команды strings libFoo.a | grep libFoo_version в сочетании с sed для изменения информации о версии.

Еще один вариант - вставить в архив пустой файл, имя которого содержит информацию о версии. YMMV

1 голос
/ 23 февраля 2010

Статические библиотеки не имеют информации о версии как таковой.

0 голосов
/ 23 февраля 2010

Если версия является частью исходного кода (например, строковой константы), то вы можете просто использовать sed, чтобы изменить ее, если новая версия имеет ту же длину, что и старая.

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