LINUX.ORG.RU

Компиляция программ с своей динамической библиотекой


0

0

Требуется создать кучу мелких программ. Все они юзают 1-2-3 общие функции. Перекомпилировать все проги после правки одной из общих функций не хочется, спасение видится в общей динамической библиотеке. Может кто знает, как это сделать?


А в чем собственно проблема ? Создай so'шку с этими 2,3-мя общими функциями и линкуй с ней. Не знаешь как ? Почитай ELF-HOWTO или GCC-HOWTO, где-то там я это видел, но кратко все же опишу этот процесс:
Компиляешь все объектники с -fpic: gcc -fpic -c lib.c
Собираешь все объектники в либу: gcc -shared -Wl,-soname,libtest.so -o libtest.so lib.o
Линкуешь свой рабочий объектник, использующий эти функции со своей новой либой: gcc test.o -ltest -L./ -o test
Добавляешь в /etc/ld.so.conf директорию, в которой находится твоя либа и запускаешь ldconfig.
Все, можешь запускать свой бинарик. При обновлении библиотеки просто перезапусти ldconfig. Но лучше почитай HOWTO, там очень хорошо все описано, а еще лучше почитай info gcc и info ld. Иначе ты не узнаешь например про возможности работы с версиями (хорошая вещь). Btw, при статической линковке тебе вовсе не нужно перекомпилировать все проги при изменении функций - достаточно их перелинковать.

timur
()

Это не портабельно. Лучше воспользуйся libtool. Тогда не будет привязки к linux, да и удобнее гораздо будет с динамическими библиотеками работать.

vsl
()

Большое спасибо за советы

antoxa
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.