2016-03-03 54 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硫辛酸會解決它:)

謝謝!