arm ubuntu 编译boost_使用yocto工具编译qt5.9.6总结
運行平臺:OKMX6DL-C
編譯平臺:Ubuntu 14.04.6 LTS
編譯工具:arm-poky-linux-gnueabi-gcc(gcc version 5.3.0 (GCC) )
qt源碼:qt-everywhere-opensource-src-5.9.6.tar.xz
參考:
嵌入式開發之Qt-5.9.6交叉編譯(帶WebEngine)
QT官網關于交叉編譯說明
g++: internal compiler error: Killed (program cc1plus) 解決辦法
第4篇 交叉編譯Qt 5.4.0
安裝 SDK:
資料:飛凌開發板提供的OKMX6X-C_Linux4.1.15 用戶資料Linux工具fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0.sh
(1)將fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0.sh拷貝到虛擬機任意目錄 ,執行:
./fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0.sh
默認將會安裝到/opt/fsl-imx-x11/目錄下(這里安裝到了/opt/fsl-imx-x11/4.1.15-2.1.0/)。
安裝完成后 /opt/fsl-imx-x11/4.1.15-2.1.0/ 目錄結構如下:
lin@ubuntu:/opt/lin$ ls environment-setup-cortexa9hf-neon-poky-linux-gnueabisite-config-cortexa9hf-neon-poky-linux-gnueabi sysroots version-cortexa9hf-neon-poky-linux-gnueabienvironment-setup-cortexa9hf-neon-poky-linux-gnueabisite-config-cortexa9hf-neon-poky-linux-gnueabi 是環境初始化腳本。
(2)環境變量(注意空格):
. /opt/lin/environment-setup-cortexa9hf-neon-poky-linux-gnueabisite-config-cortexa9hf-neon-poky-linux-gnueabi(3)譯器是否安裝成功:
arm-poky-linux-gnueabi-gcc -v安裝依賴庫
sudo apt-get install gcc-multilib g+±multilib
sudo apt install pkg-config
sudo apt install pkgconf
解壓qt源碼
$ xz -d qt-everywhere-opensource-src-5.9.6.tar.xz #解壓文件 $ tar xvf qt-everywhere-opensource-src-5.9.6.tar刪除舊版Qt
需要著重注意sysroot對應的cortexa9hf-neon-poky-linux-gnueabi目錄下存在之前編譯的舊Qt版本的動態庫,必須進行清除操作,否則將會影響新版本Qt的編譯。
cd /opt/lin/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib$ sudo rm .libQt* -rf sudo rm lib/qt5 -rf創建配置腳本
#!/bin/bash sudo ./configure -v -opensource -confirm-license -sysroot /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi -no-gcc-sysroot -prefix /usr/local/Qt-5.9.6 -device linux-imx6-g++ -device-option CROSS_COMPILE=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi- -release -shared -make libs -verbose -no-pch -no-rpath -pkg-config -accessibility -no-alsa -icu -dbus -no-glib -no-directfb -eglfs -no-kms -linuxfb -xcb -xcb-xlib -evdev -no-libinput -xinput2 -no-tslib -libudev -no-mtdev -nomake examples -nomake tests -fontconfig -no-opengl -opengl es2 -egl -no-openvg -system-zlib -system-libjpeg -system-libpng -system-xcb -openssl-linked -qt-pcre -pulseaudio -no-sm -no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci -no-sql-odbc -no-sql-psql -no-sql-sqlite2 -no-sql-tds -widgets -xkb修改qtbase/mkspecs/devices/linux-imx6-g++/qmake.conf
# # qmake configuration for the Freescale iMX6 boards (single, dual and quad) # # The configuration below is set up for running with EGL on the framebuffer via # the eglfs platform plugin and its eglfs_viv backend.# Wayland is also fully functional out of the box. However, when writing Wayland # *compositors* with Qt, the eglfs backend will have to be switched to # eglfs_viv_wl by setting the QT_QPA_EGLFS_INTEGRATION environment variable. # # Below is an example configure line that assumes the SDK is in # $HOME/imx6/toolchain. On device Qt is expected to be placed under # /usr/local/qt5 whereas on the host 'make install' will copy the host tools and # the target libraries to $HOME/imx6/qt5. # # ./configure -prefix /usr/local/qt5 -extprefix $HOME/imx6/qt5 -device linux-imx6-g++ # -device-option CROSS_COMPILE=$HOME/imx6/toolchain/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi- # -sysroot $HOME/imx6/toolchain/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi # -nomake examples -nomake tests -v #include(../common/linux_device_pre.conf)QMAKE_LIBS_EGL += -lEGL QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL -lGAL QMAKE_LIBS_OPENVG += -lOpenVG -lEGL -lGALIMX6_CFLAGS = -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1 QMAKE_CFLAGS += $$IMX6_CFLAGS QMAKE_CXXFLAGS += $$IMX6_CFLAGSDISTRO_OPTS += hard-floatDBUS_LIBS = -L/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib-ldbus-1# Preferred eglfs backend EGLFS_DEVICE_INTEGRATION = eglfs_vivQMAKE_INCDIR_OPENGL_ES2 = /home/l/workspace/imx6/tools/gpu-viv-bin-mx6q-3.10.17-1.0.2/hardfp/usr/include QMAKE_LIBDIR_OPENGL_ES2 = /home/l/workspace/imx6/tools/gpu-viv-bin-mx6q-3.10.17-1.0.2/hardfp/usr/lib QMAKE_INCDIR_EGL = /home/l/workspace/imx6/tools/gpu-viv-bin-mx6q-3.10.17-1.0.2/hardfp/usr/include QMAKE_LIBDIR_EGL = /home/l/workspace/imx6/tools/gpu-viv-bin-mx6q-3.10.17-1.0.2/hardfp/usr/libinclude(../common/linux_arm_device_post.conf)# modifications to g++.conf QMAKE_CC = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc -march=armv7-a -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi QMAKE_CXX = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ -march=armv7-a -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi QMAKE_LINK = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi QMAKE_LINK_SHLIB = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ --sysroot= /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi# modifications to linux.conf QMAKE_AR = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-ar cqs QMAKE_OBJCOPY = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-objcopy QMAKE_NM = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-nm -P QMAKE_STRIP = /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-stripload(qt_config)gpu庫
至此EGLFS i.Mx6的支持是無法開啟的,原因為sysroot中的EGL依賴庫不是GPU版本,必須使用官方提供的GPU版本。gpu-viv-bin-mx6q-3.10.17-1.0.0.tar.gz
tar xvzf gpu-viv-bin-mx6q-3.10.17-1.0.0.tar.gz解壓完成后進入gpu-viv-bin-mx6q-3.10.17-1.0.0目錄,該目錄中有以下內容: 其中hardfp中的內容是我們需要的。把hardfp目錄下的usr/lib/和include文件替換sysroot目錄下的usr/lib 和usr/include中的文件,此目錄是自己定義的,讀者可以拷貝到其它目錄下,只需要在后邊修改Qt的編譯配置文件的時候設置正確就可以了。~
sudo make
許久之后。。。
好久好久以后。。。
sudo make install
總結
以上是生活随笔為你收集整理的arm ubuntu 编译boost_使用yocto工具编译qt5.9.6总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机程序无法运行,win7电脑程序打不
- 下一篇: 计算机操作员考评标准,计算机操作员职业技