4

我正在从源代码在 Snow Leopard 上编译 ffmpeg。使用 Macport 不是一个选项,因为我在 ffmpeg 中有一些自定义修改。制作命令是:

$ ./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/lib以强制 gcc 从/usr/lib

在您的情况下,路径可能会有所不同,但您明白了。

如果您有更清洁的方法来实现这一目标,我会全力以赴

于 2011-08-18T16:10:03.673 回答
0

尝试使用 --enable-static 配置 x264。

我有一个类似的问题,这对我来说是一个解决方案。

于 2011-06-27T08:31:34.240 回答
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 回答