Используя цепочку инструментов для кросс-компиляции, предоставленную поставщиком (очевидно, производную от OpenEmbedded), я не могу встроить абсолютный путь к сторонним (с открытым исходным кодом, скомпилированным в доме) библиотекам. Со следующей командной строкой gcc:
arm-linux-gcc test_connect_send.o gprs_connect.o \
/package/host/myvendor.com/API-R-2.0.0/Release/Libraries/libgprs_stuff.so \
/package/host/myvendor.com/API-R-2.0.0/Release/Libraries/libpower_supply_stuff.so \
/package/host/myvendor.com/API-R-2.0.0/Release/Libraries/libgsm_stuff.so \
/package/host/myvendor.com/API-R-2.0.0/Release/Libraries/libtcp_stuff.so \
/package/host/aspl.es/vortex-1.1.0/lib/libvortex-1.1.so \
/package/host/aspl.es/axl-0.5.6/lib/libaxl.so.0 -o test_connect_send
objdump говорит:
Dynamic Section:
NEEDED /package/host/myvendor.com/API-R-2.0.0/Release/Libraries/libgprs_stuff.so
NEEDED /package/host/myvendor.com/API-R-2.0.0/Release/Libraries/libpower_supply_stuff.so
NEEDED /package/host/myvendor.com/API-R-2.0.0/Release/Libraries/libgsm_stuff.so
NEEDED /package/host/myvendor.com/API-R-2.0.0/Release/Libraries/libtcp_stuff.so
NEEDED libvortex-1.1.so.0
NEEDED libaxl.so.0
NEEDED libgcc_s.so.1
NEEDED libc.so.6
Обратите внимание, что у библиотек моего поставщика есть полный путь, а у aspl — нет. Также обратите внимание, как встроенное имя отличается от того, которое я указал в командной строке. Я хотел бы знать, почему (кто возится с моими путями), и как это решить.
p.s.: я знаю о RPATH, это не тот ответ, который я ищу
-v
' IIRC), чтобы увидеть точные командные строки, переданные программам-компонентам, вызваннымgcc
. Попробуйте использовать это, чтобы увидеть, сможете ли вы заметить разницу в том, как библиотеки «myvendor» и «aspl» передаются в «ld
» (или в окружающих параметрах). Что-то должно подсказывать загрузчику по-разному обрабатывать два набора библиотек. - person Jonathan Leffler   schedule 05.09.2009