交叉编译x264(二)
2011-06-08 19:35
447 查看
实现步骤:
(1)安装编译环境Linux系统
,我是在Windows上安装的虚拟机,然后在虚拟
机之上安装的Linux系统。(在虚拟机下的Linux系统中注意,使用Linux与Windows的共享文件夹时,若要对解压文件进行解压,要将解压的
文件拷贝到虚拟机linux系统下,而不要在共享文件夹中进行解压,否则解压不成功。
(2)安装交叉编译器arm-linux-gcc 3.4.1,
其安装过程:将
arm-linux-gcc 3.4.1.tar.bz2拷贝到Linux系统下,如我拷到了/WeiLi目录下。—>解压,tar –jxvf
arm-linux-gcc 3.4.1.tar.bz2。—>将解压文件中的arm文件夹拷贝到/usr/local下,cp –rv arm
/usr/local。—>修改环境变量,即将arm-linux-gcc编译器指定为3.4.1,gedit
/root/.bashrc,在/root/.bashrc这个文件的最后一行添加上命令: export PATH
=$PATH:/usr/local/arm/3.4.1/bin。arm-linux-gcc 3.4.1便安装完毕,就可以使用此交叉编译器了。
注意:对于我们的开发板,配套使用的编译器是armv4l-unknown-linux-gcc,经我通过简单的hello.c程序测试,用
arm-linux-gcc编译出的可执行程序在实验台上也能正确运行,所以arm-linux-gcc和armv4l-unknown-linux-
gcc在一定程度上可以通用,可能只是版本问题。
(3)修改X264程序
,首先对程序进行一些地方的修改,否则会出现关于
cpu_set_t的错误,关于cpu_set_t的以下那段代码是关于计算CPU内核数的代码,所以将np=1(我们所使用的计算机都是单核)直接返
回,而没有用它的计算, #elif defined(SYS_LINUX) unsigned int bit; int np; cpu_set_t
p_aff; memset( &p_aff, 0, sizeof(p_aff) );sched_getaffinity( 0,
sizeof(p_aff), &p_aff );for( np = 0;bit = 0; bit < sizeof(p_aff);
bit++ );np += (((uint8_t *)&p_aff)[bit / 8] >> (bit % 8))
& 1;return np;改成了:#elif defined(SYS_LINUX) int np;np=1; return np;
(4)编译程序,
将x264-snapshot
20070920-2245拷贝到Linux系统下,(在虚拟机的共享文件夹下也可以)。./configure
--host=arm-linux。—>修改config.mak文件,将其中的CC=gcc,AS=yasm修改成CC=arm-linux-
gcc,AS=arm-linux-as。—>make。之后便生成了可执行文件X264。
注意:此处的X264程序一定要是未被其它编译器编译过的程序,即如果此X264是被gcc或者其它编译器编译过后的程序,再使用arm-linux-gcc 3.4.1编译,会出现collect2错误。
(5)将生成的可执行文件x264移植到开发板上,
运行x264 --qp 18
--keyint 240 --min-keyint 24 --ref 3 --mixed-refs --no-fast-pskip
--bframes 3 --b-pyramid --b-rdo --bime --weightb --trellis 1 --analyse
all --8x8dct --threads 3 --thread-input --progress --no-dct-decimate –o
out.264 foreman_part_qcif_444.yuv
352x288,其中目录下要有源文件foreman_part_qcif_444.yuv然后运行之后在目录下就会生成out.264压缩文件。
如果要生成动态库:
./configure --host=arm-linux --enable-shared
config.mak改成CC=arm-linux-gcc,AS=arm-linux-as
make-》得到libx264.so.56
至于怎么用该库,请查询相关资料
(1)安装编译环境Linux系统
,我是在Windows上安装的虚拟机,然后在虚拟
机之上安装的Linux系统。(在虚拟机下的Linux系统中注意,使用Linux与Windows的共享文件夹时,若要对解压文件进行解压,要将解压的
文件拷贝到虚拟机linux系统下,而不要在共享文件夹中进行解压,否则解压不成功。
(2)安装交叉编译器arm-linux-gcc 3.4.1,
其安装过程:将
arm-linux-gcc 3.4.1.tar.bz2拷贝到Linux系统下,如我拷到了/WeiLi目录下。—>解压,tar –jxvf
arm-linux-gcc 3.4.1.tar.bz2。—>将解压文件中的arm文件夹拷贝到/usr/local下,cp –rv arm
/usr/local。—>修改环境变量,即将arm-linux-gcc编译器指定为3.4.1,gedit
/root/.bashrc,在/root/.bashrc这个文件的最后一行添加上命令: export PATH
=$PATH:/usr/local/arm/3.4.1/bin。arm-linux-gcc 3.4.1便安装完毕,就可以使用此交叉编译器了。
注意:对于我们的开发板,配套使用的编译器是armv4l-unknown-linux-gcc,经我通过简单的hello.c程序测试,用
arm-linux-gcc编译出的可执行程序在实验台上也能正确运行,所以arm-linux-gcc和armv4l-unknown-linux-
gcc在一定程度上可以通用,可能只是版本问题。
(3)修改X264程序
,首先对程序进行一些地方的修改,否则会出现关于
cpu_set_t的错误,关于cpu_set_t的以下那段代码是关于计算CPU内核数的代码,所以将np=1(我们所使用的计算机都是单核)直接返
回,而没有用它的计算, #elif defined(SYS_LINUX) unsigned int bit; int np; cpu_set_t
p_aff; memset( &p_aff, 0, sizeof(p_aff) );sched_getaffinity( 0,
sizeof(p_aff), &p_aff );for( np = 0;bit = 0; bit < sizeof(p_aff);
bit++ );np += (((uint8_t *)&p_aff)[bit / 8] >> (bit % 8))
& 1;return np;改成了:#elif defined(SYS_LINUX) int np;np=1; return np;
(4)编译程序,
将x264-snapshot
20070920-2245拷贝到Linux系统下,(在虚拟机的共享文件夹下也可以)。./configure
--host=arm-linux。—>修改config.mak文件,将其中的CC=gcc,AS=yasm修改成CC=arm-linux-
gcc,AS=arm-linux-as。—>make。之后便生成了可执行文件X264。
注意:此处的X264程序一定要是未被其它编译器编译过的程序,即如果此X264是被gcc或者其它编译器编译过后的程序,再使用arm-linux-gcc 3.4.1编译,会出现collect2错误。
(5)将生成的可执行文件x264移植到开发板上,
运行x264 --qp 18
--keyint 240 --min-keyint 24 --ref 3 --mixed-refs --no-fast-pskip
--bframes 3 --b-pyramid --b-rdo --bime --weightb --trellis 1 --analyse
all --8x8dct --threads 3 --thread-input --progress --no-dct-decimate –o
out.264 foreman_part_qcif_444.yuv
352x288,其中目录下要有源文件foreman_part_qcif_444.yuv然后运行之后在目录下就会生成out.264压缩文件。
如果要生成动态库:
./configure --host=arm-linux --enable-shared
config.mak改成CC=arm-linux-gcc,AS=arm-linux-as
make-》得到libx264.so.56
至于怎么用该库,请查询相关资料
相关文章推荐
- x264及ffmpeg交叉编译
- 交叉编译支持多线程的Android版X264库
- 交叉编译安装x264
- 基于Ubuntu交叉编译X264, FFmpeg Windows SDK详细教程
- 交叉编译支持多线程的Android版X264库
- 交叉编译x264
- hi3516a之ffmpeg x264交叉编译
- 交叉编译x264和ffmpeg
- 交叉编译支持多线程的Android版X264库
- x264 2006-07-31 svn 版的编码移植
- x264命令行参数解释
- x264源代码分析
- [乌龙事件]让xine支持x264
- X264代码分析
- Linux configure关于交叉编译的参数设置 (转)+补充一下关于 pkg-config 在交叉编译中的使用(转) + 动态.so库的环境设置, 使用 ld.so.conf(转)
- 关于交叉编译Qtopia-opensource-src-4.3.2 (参考)
- ffmpeg+x264 移植到s3c2410遇到的问题及解决办法
- x264中重要结构体说明
- 关于XVID、H.264、AVC、X264的一些知识
- 交叉编译alsa lib