2016-03-03 2 views
0

У меня есть две библиотеки libA, libB и приложение «приложение». libB использует функции libA, а «приложение» использует символы из обеих библиотек. я добавил две новые функции - 'print_data' и 'print_data_char' в Либа, которую я называю только в libB, и теперь получать:Поведение Wierd linkage - библиотеки gcc

undefined reference to 'print_data' 
undefined reference to 'print_data_char' 

Вот фактическая команда

arceb-linux-gcc apps/applications/dpi/dpi_app/build/Obj_linux_arc_sim/src/main.o apps/applications/dpi/dpi_app/build/Obj_linux_arc_sim/src/utl.o ./dpe/dp/lib/ezdp_linux_arc_sim.a ./dpe/sft/lib/sft_linux_arc_sim.a ./dpe/dpi/lib/dpi_linux_arc_sim.a -O2 -o apps/applications/dpi/dpi_app/bin/ezdpi_app_linux_arc_sim 

Lība = sft_linux_arc_sim.

libB = dpi_linux_arc_sim.a

Я проверил Lība с нм:

ezpacket_internal.o: 
00000001 a __ARCCOMPACT__ 
     U __udivsi3 
     U fprintf 
     U fputc 
     U fputs 
     U fwrite 
0000001c T print_data 
00000000 T print_data_char 

Также есть другие символы в libA, которые libB распознает. Кажется, что отсутствуют только два новых символа.

Любые идеи?

Заранее спасибо.

+0

'-lA -lB -lA -lB', вы имеете в виду? :) –

+0

@ Elad Weiss вы можете отправить команду 'gcc', которую вы выполняете, для создания своего программного обеспечения? – Emil

ответ

0

ответ Гош в: -LA -lB -LA -lB фик его :)

(У меня ушло около часа, чтобы понять, что это не опечатка)

Apparantly есть значение для lib при подключении. См: https://stackoverflow.com/questions/45135/...

На самом деле я считаю, даже -lB -LA бы решить :)

Спасибо!

Смежные вопросы