2016-03-03 169 views
0

我有两个库libA,libB和一个应用程序'app'。 libB使用来自libA的函数,'app'使用来自这两个库的符号。 我增加了两个新功能 - 'print_data' 和 'print_data_char' 以力霸我在libB只能打电话,现在越来越:Wierd链接行为 - 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 

力霸= sft_linux_arc_sim。一个

libB = dpi_linux_arc_sim.a

我检查LIBA与纳米:

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 

另外libB中还有其他一些libB可以识别的符号。看来只有两个新的符号丢失了。

任何想法?

在此先感谢。

+0

'-lA -lB -lA -lB',你的意思是? :) –

+0

@Elad Weiss你可以发布你执行的'gcc'命令来构建你的软件吗? – Emil

回答

0

戈什的回答是:硫辛酸-Lb硫辛酸-Lb固定它:)

(我花了大约一个小时,以明白,这不是一个错字)

Apparantly存在的重要性lib链接时的顺序。请参阅:https://stackoverflow.com/questions/45135/...

事实上我相信即使-Lb硫辛酸会解决它:)

谢谢!