4

ソースから Snow Leopard で ffmpeg をコンパイルしています。ffmpeg に独自の変更を加えているため、Macport を使用することはできません。make コマンドは次のとおりです。

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

エラー:

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

ソースからlibx264をコンパイルしましたが、うまくいきました。

$ 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

何がうまくいかないのですか?

4

3 に答える 3

3

と の同様の名前のライブラリの間に競合がありまし/opt/local/lib/usr/lib。前者は Macport によって維持され、後者は私自身の開発エリアでした。後者の場所を使用したかったので、それらを削除/一時的に名前を変更して、/opt/local/libgccにそれらを強制的に取得させる必要がありました/usr/lib

あなたの場合、パスは異なる場合がありますが、アイデアは得られます。

これを達成するためのよりクリーンな方法があれば、私はすべて耳にします

于 2011-08-18T16:10:03.673 に答える
0

この問題を抱えている Mac OSX 上の Homebrew のユーザーのために追加します。

余分な libx264 ライブラリ/usr/libもあり、削除する必要がありました。

これにより、brew install ffmpeg --use-clangorを使用して ffmpeg をビルドする際に次のエラーが発生しましたbrew install ffmpeg --use-gcc

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

于 2012-02-22T23:23:43.663 に答える
0

--enable-static を使用して x264 を構成してみてください。

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

于 2011-06-27T08:31:34.240 に答える