0

mpir(Windows上)を使用して公開/秘密鍵ジェネレーターを作成しましたが、正常に動作します。

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以外の機能は使用していません。何か案が?コードはたくさんあるので追加しません。

4

1 に答える 1

1

g++ -lgmp prime.cpp を使用しています

このコマンド ラインは、次の 2 つの点で壊れています。

  1. あなたはの定義を提供することを怠ったmain
  2. それを参照するソースの前にライブラリを指定しました。次のようにする必要があります。

    g++ main.cpp prime.cpp -lgmp

    コマンド ラインでのライブラリとソース/オブジェクトの順序は重要です。

アップデート:

いくつかのファイルがあります..メインファイルはそれらに依存しているため、ビルドする前に..他のファイルをビルドしようとしていました。

その場合、正しいコマンドは次のとおりです。

# Compile, but don't link, prime.cpp
g++ -c prime.cpp
于 2012-04-22T18:09:24.367 に答える