本文将阐述在Ubuntu环境下交叉编译opencv3.0.0和qt5.5.1的过程,目标平台为树莓派2
首先搭建树莓派交叉编译环境,
cd /opt
mkdir tools
git clone git://github.com/raspberrypi/tools.git tools
详细过程参考http://shumeipai.nxez.com/2013/10/08/configure-cross-compiler-platform-raspberry-pi.html
下载opencv3.0.0源码,解压到cv300文件夹下,并进入该目录
cd /home/samba/cv300
在源码的路径下创建一个名为toolchain.cmake的文件,并在该文件中输入如下信息,并保存。
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_C_COMPILER arm-bcm2708hardfp-linux-gnueabi-gcc)
set(CMAKE_CXX_COMPILER arm-bcm2708hardfp-linux-gnueabi-g++)
接下来使用cmake来生成Makefile文件。
cd /home/samba/cv300
mkdir build
cd build
cmake -D CMAKE_TOOLCHAIN_FILE=../toolchain.cmake -D CMAKE_INSTALL_PREFIX=/usr/cv300 ../
然后运行ccmake命令进入参数设置UI(如果没有ccmake,可以通过apt install cmake-curses-gui进行安装),根据需要设置各种环境变量和参数。设置完成后即可使用make && make install -j4对源码进行编译和相关库文件的生成并安装。
在目录/usr/cv300下即有了相关的库文件和头文件等,该目录下的所有内容拷贝到树莓派镜像的对应目录下即可。并在文件/etc/ld.so.conf的最后加上一行该目录/usr/cv300,保存,然后在终端运行ldconfig。即完成opencv3的移植到树莓派2上。
当然也可以把目录/usr/cv300下的所有内容制作成一个镜像文件,挂载到树莓派系统上。
qt5.5.1的移植过程
把qt5.5.1的源码加压到文件夹/home/samba/qt551下,进入该文件夹,并根据目录/home/samba/qt551/qtbase/mkspecs/devices/linux-rasp-pi2-g++下的qmake.conf的内容把/home/samba/qt551/qtbase/mkspecs/linux-arm-gnueabi-g++目录下的qmake.comf修改成如下所示,并保存。
#
# qmake configuration for building with arm-linux-gnueabi-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_LIBS_EGL = -lEGL -lGLESv2
QMAKE_CFLAGS += -march=armv7-a -marm -mthumb-interwork -mfpu=neon-vfpv4 -mtune=cortex-a7 -mabi=aapcs-linux
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
DISTRO_OPTS += hard-float
# Preferred eglfs backend
EGLFS_DEVICE_INTEGRATION = eglfs_brcm
# modifications to g++.conf
QMAKE_CC = arm-bcm2708hardfp-linux-gnueabi-gcc
QMAKE_CXX = arm-bcm2708hardfp-linux-gnueabi-g++
QMAKE_LINK = arm-bcm2708hardfp-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-bcm2708hardfp-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR = arm-bcm2708hardfp-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-bcm2708hardfp-linux-gnueabi-objcopy
QMAKE_NM = arm-bcm2708hardfp-linux-gnueabi-nm -P
QMAKE_STRIP = arm-bcm2708hardfp-linux-gnueabi-strip
load(qt_config)
进入目录/home/samba/qt551,根据实际需求使用命令./configure进行配置
cd /home/samba/qt551
./configure -opensource -confirm-license -prefix /usr/qt551 -xplatform linux-arm-gnueabi-g++ -no-pch -optimized-qmake -nomake examples
配置完成后使用make && make install -j4进行编译和安装。完成后在目录/usr/qt551下会有相关的一些文件夹存在。把该目录下的所有文件拷贝至树莓派镜像的相应目录即可完成qt5.5.1的移植。
附img镜像的制作
dd if=/dev/zero of=qt551.img bs=1M count=230
mkfs.ext2 -F qt551.img
chmod +w qt551.img
mount qt551.img -o loop /mnt
cp -rf /usr/qt551/* /mnt
umount /mnt
把该镜像拷贝到树莓派上,并挂载到/usr/qt551目录下即可。