2015-01-02 82 views
0

我想建立一個框標準的共享庫(在Ubuntu上使用代碼::塊13.12),顯然沒有一個主要的功能,因爲在Windows上編譯完美。我得到了一堆重定位錯誤+未定義的引用主?未定義的參考共享庫的主要

有什麼建議嗎?下面粘貼了輸出。

歡呼聲,邁克

-------------- Build: Debug in utils (compiler: GNU GCC Compiler)--------------- 

g++ -Wall -fexceptions -std=c++0x -g -fPIC -I -c utils/exception.cpp -o obj/Debug/exception.o 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 12 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 2 has invalid symbol index 2 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 3 has invalid symbol index 2 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 4 has invalid symbol index 11 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 5 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 6 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 7 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 8 has invalid symbol index 12 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 9 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 10 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 11 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 12 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 13 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 14 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 15 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 16 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 17 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 18 has invalid symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 19 has invalid symbol index 21 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_line): relocation 0 has invalid symbol index 2 
/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/crt1.o: In function `_start': 
(.text+0x20): undefined reference to `main' 
collect2: error: ld returned 1 exit status 
+0

我已經很多次了這個錯誤,我通常從項目刪除所有文件,刪除所有目標文件中刪除所有的項目之前將其修復元文件,關閉code :: blocks,重新打開code :: blocks並遞歸讀取所有文件,這些文件通常會修復它,但工作量很大。不用說這是code :: blocks中的錯誤。這也可能是您正在使用的庫的錯誤。 – tom

+1

它工作正常與Cmake文件,所以我懷疑它是代碼::塊 – Mike

回答

2

你的鏈接命令缺少-shared標誌,這是需要鏈接共享庫。

不幸的是,你的編譯系統沒有打印失敗的鏈接命令。

錯誤是平凡轉載像這樣:

echo "int foo() { return 0; }" | gcc -xc - 

/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11 
... 
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o: In function `_start': 
(.text+0x20): undefined reference to `main' 
collect2: error: ld returned 1 exit status 
+0

我添加了共享標誌的鏈接器設置,但沒有運氣。 – Mike

+0

@Mike「我加了...」 - 要麼你把它添加到錯誤的地方,要麼錯誤已經改變。你的第一步應該是找出你正在執行的* actual * link命令。我99.9%確定它沒有'-shared'。 –

+0

我在計算代碼::塊中的位置時遇到了一些麻煩。下一個閱讀器的參考:它是在其他構建選項 - >其他選項(在編譯器標誌的右側) – Mike