2011-12-03 1 views
7

hereの説明に従って、Ubuntu 11.10でOpenCVバージョン2.3.1をコンパイルしようとしています。私は次のエラーが発生しています。何が起こっているのか理解できません... /usr/local/lib/libavcodec.aは存在しますが、リンカーはそれにリンクできませんか?Ubuntu 11.10でOpenCV2.3.1をコンパイルするときに奇妙なリンカエラーが発生しました

エラー:

[ 20%] Built target pch_Generate_opencv_highgui 
Linking CXX shared library ../../lib/libopencv_highgui.so 
/usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32S against `av_destruct_packet' 
can not be used when making a shared object; recompile with -fPIC 
/usr/local/lib/libavcodec.a: could not read symbols: Bad value 
collect2: ld returned 1 exit status 
+0

あなたは-fPICでコンパイルしようとしたことがありよう ./configure --enable-shared --enable-pic とffmpegのを設定して構築する必要がUbuntuでの64ビットバージョンを実行していますか? – RCE

+0

何をコンパイルしますか? OpenCV自体? –

+0

@RCEコンパイラ/リンカに-fPICフラグを追加するにはどうすればよいですか? MakeFileを編集すべきですか? –

答えて

6

問題は、あなたがlibavcodec.alibopencv_highgui.soをリンクしようとしているということです。後者は-fPICなしでコンパイルされたコードから構築されています(これは普通です)。そのようなコードはx86_64の共有ライブラリにリンクすることはできません。

選択肢は次のとおりです。

  • libavcodec.soを入手し、それに対してリンクする手配、または
  • は完全にリンク行からlibavcodecまたは-lavcodecを削除します。

最初は、libavcodec-devパッケージをインストールする必要があります。

2番目の場合は、実行時にlibopencv_highgui.soからlibavcodecまでのシンボルが必要になります。メインの実行可能ファイルをlibavcodec(アーカイブまたは共有バリアントのいずれか)にリンクすることで実現できます。

+0

私はx264とffmpegの両方に--enable-picオプションを追加します。同じエラーが発生しました。その後、libhighguiとlibcv(ubuntuリポジトリからインストール)を削除し、libavc-1394-22-devもインストールしました。 OpenCVをもう一度コンパイルして正常に動作しています!ありがとう –

+0

libhighguiとlibcvをどうやって削除しましたか? libavc-1394-22-devへのリンクも送信できますか? – oneiros

4

私のテイクはそれを、となり、最初の実行はsudo apt-getをlibavcodecのを削除し、その後、sudoをして再インストールapt-getのインストールはlibopencv-devの

私はかつて同様の問題があったが、上記はそれを

2
を解決

は、あなたがそれをステップ7bに記述され、エラーが示唆するよう8bを

関連する問題