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
查来查去,也没查到什么原因,之前自己在
下载了一份代码,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!
$ 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!
相关文章推荐
- Mac OS X下编译并搭建ffmpeg开发环境及常见错误处理
- 在 Mac OS X 下使用 Android NDK r5b 编译 FFmpeg 0.8
- 在 Mac OS X 环境中从源代码编译安装 FFmpeg
- ffmpeg 在mac os x 上的编译 及 Xcode项目中的运用
- mac 系统编译ffmpeg 源码
- mac os x 下的 编译 protoc-gen-lua 的pb.so
- Mac OS X 下编译jni动态库(java调用C++)
- mac编译Android版本ffmpeg的x86_64架构库
- 在Mac OS X上用自己编译出的CoreCLR运行.NET程序
- Mac OS X 背后的故事(八)三好学生Chris Lattner的LLVM编译工具链
- [ffmpeg]学习(一)Mac上的编译
- Mac OS X下(Ubuntu虚拟机)编译Linux内核
- Mac FFmpeg x265, aac, ffplay编译安装
- macOS subversion升级 2进制文件编译和安装
- mac os x 编译hadoop
- mac os X 下编译jrtplib
- 关于Mac下编译ffmpeg静态库供framework或者dylib调用出现illegal text-relocoation代码重定向问题
- FFmpeg在Mac上完美编译
- mac os X 下编译 chromium
- 解决 Mac OS X 下 openrestry 编译报错 symbol(s) not found for architecture x86_64