Как собрать libcurl.so с другим целевым именем? - PullRequest
1 голос
/ 02 ноября 2010

Я использую libcurl для своей утилиты, и до сих пор она работала очень хорошо для всех платформ Linux.Я скачал, разархивировал и просто следовал инструкциям без каких-либо изменений.Мой продукт использует файл libcurl.so и связан динамически.Файл .so поставляется вместе с нашим продуктом.Недавно в Suse возникли проблемы, в результате которых мы обнаружили, что Libcurl по умолчанию связан, а в установке произошел конфликт.

Чтобы избежать этой проблемы, мы пытались переименовать libcurl.so в libother_curl.so, но это не помоглоне работает и мои двоичные файлы все еще показывают libcurl.so как зависимость через ldd.С тех пор я узнал, что в формате ELF общих объектов linux имя файла жестко закодировано как имя файла SO в заголовках (то же самое можно проверить с помощью objdump -p).

Теперь мой вопрос: какой самый простой путь?Как мне собрать libcurl с другим именем? Мой оригинальный процесс включает запуск configure со следующими ключами

./configure --without-ssl --disable-ldap --disable-telnet --disable-POP3 --disable-IMAP --disable-RTSP --disable-SMTP --disable-TFTP  --disable-dict --disable-gopher --disable-debug --enable-nonblocking --enable-thread --disable-cookies --disable-crypto-auth --disable-ipv6 --disable-proxy --enable-hidden-symbols --without-libidn --without-zlib

Make

Затем выберите сгенерированные файлы из /lib/.libs

Существуют ли какие-либо переключатели конфигурации, в которых я могу указать имя целевого файла?Любой конкретный Makefile, который я мог бы изменить?

Я пытался изменить то, что, по моему мнению, могло быть очевидным местоположением, но либо не могло генерировать библиотеки, либо создавалось с тем же именем.

Любая помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 11 ноября 2010

Я получил ответ на форумах по керлингу (Спасибо, Дэн).По сути, мы должны использовать makefile.am в качестве отправной точки, чтобы просмотреть список файлов и изменить имя библиотеки "libxxx_curl".

$ find.-name Makefile.am | xargs sed -i 's / libcurl (.la) / libxxx_curl \ 1 / g' $ buildconf $ configure $ make

0 голосов
/ 02 ноября 2010

Многие коммерческие приложения связывают свои конкретные версии библиотек по нестандартному пути, а затем настраивают переменную среды LD_LIBRARY_PATH в сценарии запуска, чтобы избежать конфликта.ИМХО, это лучше, чем пытаться изменить целевое имя.

...