本文记录一下在ubuntu下交叉编译x265的详细过程,及有可能遇到的问题和解决方法。送给有需要的朋友们。
- 本人使用的是ubuntu 18.04
- x265的版本是2.7,附上下载地址http://ftp.videolan.org/pub/videolan/x265/
- ARM交叉编译器是由友善之臂提供的arm-gcc-4.5.1-v6-vfp
好了,闲话不多说,步骤如下:
1. 首先,安装编译所需要的工具
sudo apt install yasm cmake cmake-curses-gui
2. 下载x265的压缩包, tar xvf x265_2.7.tar.gz 解压,在x265_2.7/build/arm-linux/目录下可以看到有两个文件crosscompile.cmake和make-Makefiles.bash,需要对两个文件进行修改,如下:
crosscompile.cmake修改后如下:
# CMake toolchain file for cross compiling x265 for ARM arch
# This feature is only supported as experimental. Use with caution.
# Please report bugs on bitbucket
# Run cmake with: cmake -DCMAKE_TOOLCHAIN_FILE=crosscompile.cmake -G "Unix Makefiles" ../../source && ccmake ../../source
set(CROSS_COMPILE_ARM 1)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR armv6l)
# specify the cross compiler
set(CMAKE_C_COMPILER /opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc)
set(CMAKE_CXX_COMPILER /opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-g++)
# specify the target environment
SET(CMAKE_FIND_ROOT_PATH /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi)
这里设置交叉编译器可以将变量设置成完整路径或者文件名,我这里设置用的是完整路径,朋友们可根据自己的交叉编译器的安装路径进行设置 或者 设置成文件名arm-linux-gcc和arm-linux-g++(前提是配置好交叉编译器的环境变量)。
make-Makefiles.bash修改后如下:
#!/bin/bash
# Run this from within a bash shell
cmake -DCMAKE_TOOLCHAIN_FILE=crosscompile.cmake -G "Unix Makefiles" ../../source && ccmake ../../source
3. 好了,文件修改完毕,下面就要进行配置编译了
先别急,看看官方说明文档的简介
= Build Instructions Linux =
1. Use cmake to generate Makefiles: cmake ../source
2. Build x265: make
Or use our shell script which runs cmake then opens the curses GUI to
configure build options
1. cd build/linux ; ./make-Makefiles.bash
2. make
可以看到,有两种编译方式,本人选择的是后者,
注意:我们是要进行交叉编译,所以是cd build/arm-linux
首先给make-Makefiles.bash赋予可执行权限:chmod +x make-Makefiles.bash
然后,执行:./make-Makefiles.bash
可以看到,会弹出一个目录 ,我的配置如下:
BIN_INSTALL_DIR bin
CHECKED_BUILD OFF
CMAKE_BUILD_TYPE Release
CMAKE_INSTALL_PREFIX /usr/local/x265 (这是本人设置的安装路径,可修改为你需要的安装路径)
DETAILED_CU_STATS OFF
ENABLE_AGGRESSIVE_CHECKS OFF
ENABLE_ASSEMBLY ON
ENABLE_CLI ON
ENABLE_HDR10_PLUS OFF
ENABLE_LIBNUMA ON
ENABLE_PIC OFF
ENABLE_PPA OFF
ENABLE_SHARED OFF (这里默认是开启的,生成动态库,根据需要设置)
ENABLE_TESTS OFF
ENABLE_VTUNE OFF
FSANITIZE
LIBDL /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib/libdl.so (不要漏了这个库,根据实际路径设置)
LIB_INSTALL_DIR lib
NASM_EXECUTABLE /usr/bin/yasm (yasm文件,在本文开头第一步已经安装好了)
NO_ATOMICS OFF
NUMA_ROOT_DIR NUMA_ROOT_DIR-NOTFOUND
STATIC_LINK_CRT OFF
WARNINGS_AS_ERRORS OFF
设置完成后,按c,然后按g继续。
然后 make (耐心等待编译完成)
这里说明一下,目前x265的版本还有2.8和2.9这两个比2.7新的版本,但这两个版本用以上配置去编译会出现问题,目前本人还没有研究出解决所出现问题的方法(欢迎读者留言探讨),所以暂时就用2.7版本啦!
最后 sudo make install (因为我的安装路径是/usr/local/x265,需要超级权限,所以加上sudo)
等待安装完成。
提示:在编译用到x265库函数的程序时,需要加上 -lx265
好了,本文内容到此结束,希望能给读者带来一些帮助,欢迎读者留言一起学习探讨!