Под gcc (g ++) я собрал статическую библиотеку .a
(назовите ее some_static_lib.a
). Я хочу связать (это правильная фраза?) Этот файл .a
в другую динамическую библиотеку (назовите ее libsomeDyn.so
), которую я создаю. Хотя .so
компилирует, я не вижу содержание .a
под .so
используя nm
команду:Как связать статическую библиотеку с динамической библиотекой в gcc
/USR/BIN/г ++ -fPIC -g -O2 -Wall -Werror -pipe -march = Pentium3 -mtune = prescott -MD -D_FILE_OFFSET_BITS = 64 -DLINUX -D_GNU_SOURCE -D_THREAD_SAFE -I ../../../../../../../../ -I ../../ .. /../../../../..//libraries -Wl, -rpath,/usr/lib -o libsomeDyn.so some.o another.o some_static_lib.a -shared -Wl -x - Wl, -soname, libsomeDyn.so
Я не вижу функции под some_static_lib.a
под libsomeDyn.so
. Что я делаю не так?
Итак, у меня есть какая-то странная зависимость в статической библиотеке. Он ссылается на функцию, включенную в динамическую библиотеку. Как указать gcc найти неопределенную ссылку внутри динамической библиотеки? Спасибо – bob
@bob - не должно быть проблем со статической библиотекой, ссылающейся на символ в динамической библиотеке (после связывания статической библиотеки это так же, как если бы вы напрямую ссылались на .o в командной строке). Я подозреваю, что должна быть какая-то другая проблема и рекомендуем опубликовать новый вопрос. –
Это решение для меня, но на OSX мне пришлось использовать '-all_load' как эквивалент' -whole-archive', как мне предложили IRC. Надеюсь, это поможет кому-то другому! – vmonteco