7

コマンドで次のエラーが発生するg++ -o test -L . -l pq

libpq.so: file not recognized: File format not recognized

#file libpq.so
libpq.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), not stripped

gcc バージョン 4.1.2 20070115 (SUSE Linux)

-l dbodbcの代わりに使用しようとすると、同じエラーが発生します-l pq

test.cこれは単純な hello world プログラムであることに注意してください。

前もって感謝します。

4

1 に答える 1

6

file /usr/bin/g++それg++自体が64ビットの実行可能ファイルである、つまり64ビットマシンで実行されることを示していますが、g ++が64ビットコードをコンパイルできることを示していません(ほとんどありませんが、完全に異なるクロスコンパイラである可能性があります)プロセッサ!)またはを使用して、実行可能ファイルを生成するターゲットを確認します。g++ -vg++ -dumpmachine

G ++は実際にはそのライブラリを使用せず、-lオプションをリンカーに渡すだけなので、エラーはリンカーから発生します。ld

ldobjdumpが両方ともライブラリを認識できないと言っているが、同じファイルが別のマシンで問題ない場合は、との両方を提供するパッケージを更新または再インストールしてみbinutilsます。ldobjdump

32ビットがbinutilsインストールされている可能性があるためldobjdumpx86_64ライブラリを理解できません。64ビット(つまりx86_64)のbinutilsRPMがインストールされていることを確認します。

于 2013-01-19T23:07:38.577 に答える