2011-06-27 35 views
4

ソースからSnow Leopardでffmpegをコンパイルしています。私はffmpegでいくつかのカスタム修正があるので、Macportを使うのはオプションではありません。メイクコマンドは次のとおりです。未定義のシンボルのため、Ffmpegのコンパイルが失敗する_x264_encoder_open_112(アーキテクチャx86_64)

$ ./configure --enable-gpl --enable-libmp3lame --enable-static \ 
      --disable-shared --enable-libx264 --enable-pthreads \ 
      --disable-doc --enable-avfilter 
$ make 

エラー:私は罰金行ったソースからlibx264をコンパイルした

CC ffplay.o 
ffplay.c: In function ‘SDL_main’: 
ffplay.c:3157: warning: assignment discards qualifiers from pointer target type 
LD ffplay_g 
Undefined symbols for architecture x86_64: 
    "_x264_encoder_open_112", referenced from: 
     _X264_init in libavcodec.a(libx264.o) 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 
make: *** [ffplay_g] Error 1 

$ cd x264-snapshot-20101228-2245; ./configure && make && sudo make install 

...、それは間違っている可能性がありますどのようなシンボル "_x264_encoder_open_112"

$ nm ./libx264.a | grep _x264_encoder_open_112 
0000000000003ef0 T _x264_encoder_open_112 
000000000000d7b0 S _x264_encoder_open_112.eh 

が含まれていますか?

+0

これを解決しましたか?私はまったく同じ問題を抱えています... – beardedd

+0

@beardedd私は正確な答えはありませんが、私はライブラリを再構築する必要がありました。私はmacportからの紛争があったと思う。したがって、それらのlibsを一時的に削除してgccに '/ usr'からではなく'/opt'からx264.aを選択させたいかもしれません。私たちを掲載し続ける! –

答えて

3

/opt/local/lib/usr/libという名前のlibの間に競合がありました。前者はMacportによって維持され、後者は私自身のdevエリアです。後者の場所を使用したかったので、gccにそれらを引き取らせるには、/opt/local/libの名前を削除するか一時的に名前を変更する必要がありました。/usr/lib

あなたの場合、パスは異なる場合があります。私は/usr/libに余分libx264のLIBSを持っていた

:あなたはこれを達成するためのクリーンな方法を持っている場合は

、私は私は、Mac OSXは、この問題を持つ上の自作のユーザーのために追加するつもりだ

+2

私は同じ問題を抱えていましたが、/ opt/local/libを私のパスから削除しました。問題を解決しました。私はそれを私の道に戻しました。 – dcoffey3296

+0

@ dcoffey3296これも機能します –

0

- enable-staticでx264を設定しようとします。

私は同様の問題を抱えていて、それが私の解決策でした。

+0

こんにちは@weekens、私は恐れていますが、これは動作しません。なぜなら、x264のconfigureは--enable-staticを受け入れないからです。 '$ ./configure --enable-static 未知のオプション--enable-static、ignored' –

+0

@Saptarshi、それは以前は私のために働いていました。 Githubから私の枝を取って、それが機能するかどうかを調べてみてください。 'git clone git://github.com/weekens/x264-devel。git' – weekens

+0

あなたが正しいです - 'git:// git.videolan.org/x264.git'の最新のソースは本当に--enable-staticオプションをサポートしています。私は混乱の原因となった古いスナップショットを使用していました。 しかし、 - enable-staticを使用しても私の問題は解決しません。私はすでに静的な.aライブラリを持っていたのでこれが期待されます。 –

0

すべての耳にはしています私は取り除かなければならなかった。

これはbrew install ffmpeg --use-clangまたはbrew install ffmpeg --use-gccとffmpegの構築にこのエラーが発生しました:

LD libavcodec/libavcodec.53.dylib 
AR libavcodec/libavcodec.a 
Undefined symbols for architecture x86_64: 
    "_x264_bit_depth", referenced from: 
     _X264_init_static in libx264.o 
     _X264_frame in libx264.o 
    "_x264_picture_init", referenced from: 
     _X264_frame in libx264.o 
    "_x264_param_default_preset", referenced from: 
     _X264_init in libx264.o 
    "_x264_param_apply_fastfirstpass", referenced from: 
     _X264_init in libx264.o 
    "_x264_param_apply_profile", referenced from: 
     _X264_init in libx264.o 
    "_x264_encoder_open_120", referenced from: 
     _X264_init in libx264.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 
make: *** [libavcodec/libavcodec.53.dylib] Error 1 

を余分なファイルは以下の通りであった。

/usr/lib/libx264.79.dylib 
/usr/lib/libx264.a 
/usr/lib/libx264.dylib 

これらのバージョンは変更になる場合がありますが。削除後、ビルドは成功しました。

libavcodecへの接続が見つかりませんでしたが、非常に混乱していたので、ここでこの回答を残してください。

関連する問題