我正在从源头编译Snow Leopard上的ffmpeg。使用Macport不是一个选项,因为我在ffmpeg中有一些自定义修改。 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
可能出现什么问题?
答案 0 :(得分:3)
来自/opt/local/lib
和/usr/lib
的类似命名的lib之间存在冲突。前者由Macport维护,后者是我自己的开发区。由于我想使用后一个位置,我必须删除/暂时重命名/opt/local/lib
中的那些以迫使gcc从/usr/lib
在你的情况下,路径可能会有所不同,但你明白了。
如果你有更清洁的方法来达到这个目标,那我就是耳朵了
答案 1 :(得分:0)
尝试使用--enable-static配置x264。
我遇到了类似的问题,这对我来说是一个解决方案。
答案 2 :(得分:0)
我将在Mac OSX上为Homebrew用户添加此问题:
我在/usr/lib
中还有额外的libx264库,我必须删除它。
这导致使用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
失败的连接非常困惑。