您的位置:首页 > 其它

MAC OS X上编译ffmpeg

2013-11-11 23:44 579 查看
我使用的MAC OS X版本是Version 10.9,内置的编译器版本是

$ gcc -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1
Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin13.0.0
Thread model: posix

编译生成的ffmpeg文件可以运行,用file查看文件格式:

$ file ffmpeg
ffmpeg: Mach-O 64-bit executable x86_64

在源码的doc/examples/目录下有几个示例程序的源码文件,执行make命令,编译这几个源码文件:

$ make
cc demuxing_decoding.o -L/usr/local/lib -lavdevice -liconv -lm -lbz2 -lz -lavfilter -liconv -lm -lbz2 -lz -lavformat -liconv -lm -lbz2 -lz -lavcodec -liconv -lm -lbz2 -lz -lswresample -lm
-lswscale -lm -lavutil -lm -o demuxing_decoding
Undefined symbols for architecture x86_64:
"_av_frame_alloc", referenced from:
_main in demuxing_decoding.o
"_av_frame_free", referenced from:
_main in demuxing_decoding.o
"_av_frame_unref", referenced from:
_decode_packet in demuxing_decoding.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [demuxing_decoding] Error 1

查来查去,也没查到什么原因,之前自己在
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg


下载了一份代码,commit是676bc505f74ae5596ed42076be6e8ff546b383df,执行./configure,make,make install命令后,然后自己又brew install ffmpeg安装了一下ffmpeg,可能是后面ffmpeg安装时,把前面make install安装的某些头文件和库文件给覆盖了,执行brew uninstall
ffmpeg命令,删除之前安装的ffmpeg后,在doc/examples/目录下再执行make命令,竟然编译通过了~~~莫名其妙的错误,莫名其妙的又好了~~~

在doc/examples/目录下,创建文件ffmpeg-dev.c文件,文件内容:

#include <stdio.h>
#include <stdlib.h>

#include <libavformat/avformat.h>

int main(int argc, char** argv)
{
printf("Start!\n");

av_register_all();

printf("End!\n");

return 0;
}

在Makefile文件中,

EXAMPLES= ffmpeg-dev
在原来的EXAMPLES变量的字符串值后面添加ffmpeg-dev,这样,执行make命令,就能编译ffmpeg-dev.c源码文件,生成ffmpeg-dev可执行文件,执行生成的ffmpeg-dev文件:

$ ./ffmpeg-dev
Start!
End!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: