2012-04-22 86 views
0

我用mpir(在windows上)編寫了一個公鑰 - 私鑰生成器,它工作正常。Linux上的GMP(MPIR)鏈接器錯誤

當我嘗試在使用gmp庫的linux機器上編譯它時,它會引發大量鏈接器錯誤。

/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 0 has invali 
d symbol index 11 
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 1 has invali 
d symbol index 12 
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 2 has invali 
d symbol index 2 
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 3 has invali 
d symbol index 2 
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 4 has invali 
d symbol index 11 
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 5 has invali 
d symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 6 has invali 
d symbol index 13 
... 
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crt1.o: In function `_start' 
: 
(.text+0x20): undefined reference to `main' 
collect2: ld returned 1 exit status 

我正在使用g++ -lgmp prime.cpp。我沒有使用任何非gmp函數。任何想法?我不添加代碼,因爲它有很多。

+0

什麼是海灣合作委員會的命令是什麼? – stark 2012-04-22 17:52:56

+0

g ++ -lgmp key.cpp – questions 2012-04-22 18:02:28

+0

你能編譯一個基本的(C)「hello world」程序嗎? – Mat 2012-04-22 18:09:15

回答

1

我用G ++ -lgmp prime.cpp

此命令行兩種方式打破:

  1. 你忽略了提供main
  2. 您指定的definiton引用它的源代碼之前的庫。應該是:

    g++ main.cpp prime.cpp -lgmp

    庫和源/目的對命令行matters的順序。

更新:

有幾個文件..主文件依賴於他們,所以構建之前..我試圖建立的其他文件。

在這種情況下,正確的命令是:

# Compile, but don't link, prime.cpp 
g++ -c prime.cpp 
+0

有幾個文件..主文件依賴於它們,所以在構建它之前..我試圖構建其他文件。 – questions 2012-04-22 18:10:51

+0

耶..有效。謝謝!!但是在另一個文件中,gmp沒有標識'mp_bitcnt_t'類型..說'mp_bitcnt_t沒有被聲明' – questions 2012-04-22 18:17:22

+0

您使用的是什麼版本的GMP? IIRC,mp_bitcnt_t在5.0中引入。 – casevh 2012-04-22 20:39:34