帝国企业网站模板,济宁建设企业网站,建设一个官方网站多少钱,巨量引擎1。Linux下编译X264#xff1a;
其实在windows下使用vc已经编译过了#xff0c;不过听到有人说在linux下编好了#xff0c;我也就尝试做一下#xff0c;况且x264源代码的makefile已经做好了#xff0c;我只需要做的就是把文件copy一下#xff0c;然后make 一下就可以了。…1。Linux下编译X264
其实在windows下使用vc已经编译过了不过听到有人说在linux下编好了我也就尝试做一下况且x264源代码的makefile已经做好了我只需要做的就是把文件copy一下然后make 一下就可以了。
首先把x264-060805复制到目录下。
1、I64uI64的错误if (delta 32767I64 || delta -32768I64)这是lsp添加的把注释部分换一下去除I64的使用
2、nasm。我用的ubuntu没有安装nasm所以一些汇编无法通过直接安装一下就可以了ftp://ftp.zytor.com/pub/nasm/snapshots/
然后在x264-060805下make,就编译好了可执行文件x264有600多K比vc下的要大估计是添加的模块不同或者编译方法不同。暂且不管
简单测试一下./x264 -o test.264 file.yuv 176x144 得到了.264文件用vlc播放可以播放。暂时证明是编译正确吧。
2。最近移植x264的过程。
最新的版本我最开始用的是20090715这个已经有cross-compile的支持了移植应该还是很顺利的。但是这个版本的win下编译不通过问题在网上找了一下没有解决。后来退而求其次选择了一个20060805的版本这个版本在网上找到了win下vc6可以编译通过的版本同时也可以在x264的官方ftp上找到linux下可以编译的版本。最后决定使用这个版本。这样可以方便一些在win下的交互调试。注意这里要提醒一下几年之内x264的变化还是很大的。总之在需要两个平台交叉调试的时候看来一个相同的版本是非常有必要的。否则可能会发生这种情况程序在win下好用在linux下就不好用了然后你一边用vs一边用gdb终于找到了不同的地方发现x264的一个标准API对同一个参数的赋值是完全不一样的……比如我就发现我使用的两个版本的x264_param_init()函数对param.i_bframe赋值是不同的导致我的一个程序在win下是好的linux下就是坏的新版本的移植我不说了大概说一下旧版本的移植。旧的是没有--disable-asm和--cross-compile这两个configure的支持的前者是对x86的汇编优化交叉编译的时候当然不要的后者是交叉编译环境设置。其实和我之前的移植过程差不多这里写个步骤 ./configure --prefix/home/peter/workspace --enable-shared --enable-debug 我这里打开了动态链接和debug。前者可以生成libx264.so后者可以在你调程序用gdb的时候step into库函数里。 2.修改配置参数 修改config.mak prefix/home/peter/workspace exec_prefix${prefix} bindir${exec_prefix}/bin libdir${exec_prefix}/lib includedir${prefix}/include # 这里改为ARMARCHARMSYSLINUX # 这里改为arm-linux-gccCCarm-linux-gcc # 这里去掉-DHAVE_MMXEXT -DHAVE_SSE2 -DARCH_X86CFLAGS-Wall -I. -O4 -ffast-math -D__X264__ -DHAVE_MALLOC_H -DSYS_LINUX -DHAVE_PTHREAD -s -fomit-frame-pointer LDFLAGS -lm -lpthread -s ASnasm ASFLAGS-O2 -f elf VFWno GTKno EXE VISno HAVE_GETOPT_LONG1 DEVNULL/dev/null CONFIGURE_ARGS --enable-shared --prefix/home/peter/workspace SONAMElibx264.so.49 default : $(SONAME) 修改Makefile将66~68行的ar和ranlib改为arm下的libx264.a: .depend $(OBJS) $(OBJASM) arm-linux-ar rc libx264.a $(OBJS) $(OBJASM) arm-linux-ranlib libx264.a3.编译安装make make install就可以了。