1

特定のライブラリとそのバージョンで使用されているシンボルを見つけることができるサイトはありますか? たとえば、gcc を使用して AIX でコードをコンパイルしようとすると、多くの未定義シンボル エラーがスローされます。たとえば、次のような出力が表示されます。

ld: 0711-317 ERROR: Undefined symbol: .__fixdfdi
ld: 0711-317 ERROR: Undefined symbol: .__divdi3
ld: 0711-317 ERROR: Undefined symbol: .__moddi3
ld: 0711-317 ERROR: Undefined symbol: .__floatdidf
ld: 0711-317 ERROR: Undefined symbol: .__umoddi3
ld: 0711-317 ERROR: Undefined symbol: .__udivdi3
ld: 0711-317 ERROR: Undefined symbol: .__fixunsdfdi

これらのシンボルがどこにあるかを見つけるには、どこに行けばよいでしょうか。gccLinux で同じコマンドを実行すると、問題なく動作します。

-lgccも含めようとしましたが、再びいくつかの未定義のシンボルがスローされregister_frameます...何とか何とか...そして私はAIXにうんざりしています。

これに関する助けをいただければ幸いです..そして、この問題についてグーグルを気にしないでください. あなたはどこにも行き着かないでしょう。

多くの人がこの種の質問をしますが、答えはありません。

ありがとう

4

5 に答える 5

1

私が AIX で何かをコンパイルしてから (ありがたいことに) 長い時間が経ちましたが、AIX で構築された当社の JNI やその他のソフトウェア ライブラリを取得するために 1 年ほど費やした苦労を感じています。

GCC は常に同様のエラーが発生したため、GCC が特にうまく機能しなかったことを覚えているようです。ネイティブ コンパイラ (xlC) を使用するオプションはありますか?

私があなたのライブラリの順序をチェックしないと、それは物事を適切に機能させる上で大きな役割を果たします..

nm ユーティリティを使用して、/usr/lib (など) 内のすべてのライブラリを反復処理し、不足しているシンボルがどこにあるかを見つけたと思いますか?

于 2009-02-17T07:04:18.953 に答える
1

それらは数学記号です。リンク行に -lm を追加してみてください。

于 2009-03-28T06:29:57.587 に答える
0

主に質問:

  • GCC のどのバージョンですか?
  • AIX のどのバージョンを使用していますか?
  • GCC のコピーはどのバージョンの AIX 用に作成されましたか?
  • 使用しているリンクラインは正確には何ですか?

ダウン バージョンの AIX でコンパイルされたバージョンの GCC を使用しているときに、この種のエラーが発生したことがあります。例えば、GCC が AIX 4.3.3 用にコンパイルされ、AIX 5.x で実行されている場合。通常、GCC が AIX のアップ バージョンでコンパイルされた場合、ダウン バージョンでは実行されないため、問題になることはほとんどありません。

もう 1 つの (かなりありそうにない) 可能性: GCC は、コンパイルされた場所にインストールされていると予想される場所にインストールされていますか? ビルドするときは、(おそらく暗黙のうちに) インストール場所 (デフォルトでは の下/usr/local) を指定します。コピーが別の場所にインストールされていて、古い GCC が に/usr/localあり、コピーが にインストールされることを期待している/usr/local場合、この種の問題に遭遇する可能性があります。これは、バージョンの不一致よりもはるかに少ない可能性です。

于 2009-02-17T08:29:33.117 に答える
0

リストされた外部シンボルはからのものでlibgccあるため、add of-lgccは正しいです。またregister_frame、一部ですlibgccが、32ビットのみです。コンパイラ、リンカー、およびライブラリに同じビット深度モードを使用しているかどうかを確認してください。

于 2019-11-23T15:37:06.670 に答える