前面一部分涉及转载 转载人是:qiankun2793
1.2其他依赖库安装
1.2.1libjpeg交叉编译
这个以后面的依赖库编译和安装都需要首先进行配置
tar -xzvf jpegsrc.v9.tar.gz
cd jpeg-9
./configure --host=arm-linux CC=arm-linux-gnueabihf-gcc --prefix=<dependency install path>
make
make install
可以在配置的时候指定将编译好的库安装的位置,或者使用”sudomake install”直接安装在”/usr/local/lib”里,以下安装方式类似。
可以切换到安装的文件夹下查看是否交叉编译成功
file libjpeg.so.9.0.0
如果输出信息为
libjpeg.so.9.0.0: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, not stripped1
说明交叉编译成功
1.2.2zlib交叉编译
zlib需要预先指定CC选项
export CC=arm-linux-gnueabihf-gcc
./configure --shared --prefix=<dependency install path>
make
make install
1.2.3libpng交叉编译
因为libpng交叉编译需要用到zlib,所以需要在编译该库之前交叉编译好zlib
export LDFLAGS="-L<zlib install path>/lib"
export CPPFLAGS="-I<zlib install path>/inclue"
./configure --host=arm-linux CC=arm-linux-gnueabihf-gcc --prefix=<dependency install path>
在编译之前,需要指定zlib的库的安装路径和头文件位置,如果是用管理员权限安装的上述路径分别为
export LDFLAGS="-L/usr/local/lib"
export CPPFLAGS="-I/usr/local/include"
///////////////////////////////////////////////////
1.2.4x264交叉编译
tar -xvf x264-snapshot-20161019-2245-stable.tar
cd x264-snapshot-20161019-2245-stable/
./configure --host=arm-xilinx-linux --cross-prefix=arm-xilinx-linux-gnueabi- --disable-asm --enable-shared --
prefix=<dependency install path>
make
make install
1.2.5xvidcore交叉编译
xvidcore的配置文件在/build/generic里
cd build/generic
.
/configure
--
host
=
arm-xilinx-linux-gnueabi
--
disable-assembly
--
enable-shared
--
prefix
=<
dependency install path
>
make
make install
1234
////////////////////////////////////////这两个可以不编译。
1.3FFmpeg 交叉编译
git clone https:
//git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
./configure --enable-shared --disable-static --cross-prefix=arm-xilinx-linux-gnueabi-
--arch=arm --target-os=linux --disable-stripping --enable-cross-compile --disable-asm
/////////////--
enable-libxvid
--
enable-libx264
/////
前面两个没编译就没有这个选项
///-
-enable-gpl --extra-cflags=-I<dependency install path>/include --extra-ldflags=-L<dependency install path>/lib
//可不用
--prefix=<dependency install path>
make
make install
1.4OpenCV 交叉编译
首先写一个toolchain.cmake文件,将下面内容复制进去
set( CMAKE_SYSTEM_NAME Linux ) set( CMAKE_SYSTEM_PROCESSOR arm ) set( CMAKE_C_COMPILER arm-linux-gnueabihf-gcc ) set( CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++ ) set( CMAKE_FIND_ROOT_PATH "/home/lenovo01/project-code/cc-lib/dependency-lib/" ) set( CMAKE_C_FLAGS "-Wl,-rpath-link=/home/lenovo01/project-code/cc-lib/dependency-lib/") set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER ) set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )
上面的CMAKE_FIND_ROOT_PATH和CMAKE_C_FLAGS里的路径要修改为前面那些依赖和FFmpeg的安装路径
解压OpenCV源码,并生成Makefile文件
mkdir build
cd build
cmake -D CMAKE_TOOLCHAIN_FILE=../toolchain.cmake -D BUILD_opencv_nonfree=OFF ../opencv-2.4.1
如果系统内没有安装cmake需要先安装和下面用到的cmake图形工具
sudo apt-get install cmake cmake-curses-gui
然后配置OpenCV的编译选项
ccmake .
会出现如下的配置界面,
使用上下方向键可以翻页,至少以下几个选项为ON,
WITH_FFMPEG
WITH_JPEG
WITH_PNG
WITH_V4L
注意:由于出错选择的时候有去掉了with1934 with gtk。
按’c’然后按’g’来生成Makefile
然后运行
一直找不到ffmpeg库的解决办法:
1、添加环境变量:sudo/etc/bash.bashrc
添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/lenovo01/project-code/cc- lib/dependency-lib/lib/pkgconfig
exportPKG_CONFIG_PATH
exportLDFLAGS=-Wl,-rpath-link,/home/lenovo01/project-code/cc-lib/dependency-lib/lib
路径是交叉编译的依赖库的路径,依赖库包括 libjpeg libpng libz ffmpeg。均放在一个目录下,要注意lib目录下的pkgconfig一定要全部弄进来。
2、然后按正常步骤cmake就可以了。
也可以用强制解决办法:
1、把交叉编译的ffmpeg库文件全部拷贝到/usr/local/lib下 同时要拷贝pgkconfig文件。
2、按正常步骤cmake就可以了。
交叉编译库太恶心了 简直要编到吐了!!!!!!