這篇博文並不介紹如何交叉編譯qt-everywhere來利用宿主機進行qt程序的交叉編譯
因爲在使用qt-everywhere源碼中的configure腳本進行編譯配置時,需要提供嵌入式設備的sysroot來判斷部分組件是否被支持並勾選編譯,而我配置的ubuntu根文件系統在利用configure腳本進行編譯時,由於依賴的缺失,無法編譯eglfs X11及xcb相關項目,導致最終編譯出的qmake交叉編譯出的程序無法在嵌入式設備上良好的運行eglfs
(折騰好幾天了,決定先放一放)
這裏另闢蹊徑是在宿主機上掛載嵌入式設備的rootfs(例如我之前配置好的ubuntu根文件系統https://blog.csdn.net/sements/article/details/88086468),在其中安裝qmake,及編譯器。在宿主機上
來利用宿主機的性能另闢蹊徑的編譯能夠在嵌入式設備上運行的qt程序
egl - EGL,它是圖形渲染API(如OpenGL ES)與本地平臺窗口系統的一層接口,保證了OpenGL ES的平臺獨立性
eglfs - egl full screen
xcb - X protocol C-language Binding (XCB) c語言x協議綁定
以下操作爲掛載根文件系統後在其中的操作
1 - 根文件系統環境準備
可參考 移植ubuntu 18.04.2 到arm平臺(i.MX6UL)- ubuntu根文件系統的修改與配置(從零開始的掉頭髮生活 )
安裝 qt5-default , gcc,g++ 。這裏gcc和g++是我利用apt安裝pkg-config時自動依賴安裝的
通過 apt list --installed |grep gcc,我得到了下列輸出。推斷可能通過命令安裝gcc及gcc-8-base包,然後apt會附帶的安裝好其餘依賴(未嘗試,歡迎解惑)
sements@ubuntu:~/developArea/qeyes$ apt list --installed |grep gcc WARNING: apt does not have a stable CLI interface. Use with caution in scripts. gcc/bionic-updates,now 4:7.3.0-3ubuntu2.1 armhf [已安裝,自動] gcc-7/bionic-updates,now 7.3.0-27ubuntu1~18.04 armhf [已安裝,自動] gcc-7-base/bionic-updates,now 7.3.0-27ubuntu1~18.04 armhf [已安裝,自動] gcc-8-base/bionic-updates,now 8.2.0-1ubuntu2~18.04 armhf [已安裝] libgcc-7-dev/bionic-updates,now 7.3.0-27ubuntu1~18.04 armhf [已安裝,自動] libgcc1/bionic-updates,now 1:8.2.0-1ubuntu2~18.04 armhf [已安裝]
sudo apt install qt5-default gcc gcc-8-base g++ g++-7
由於是armhf的嵌入式根文件系統,這裏gcc實際上鍊接的是arm-linux-gnueabihf-gcc
通過tab鍵自動聯想看一下是否相關的組件已經安裝
sements@ubuntu:~/developArea/qeyes$ arm-linux-gnueabihf-
arm-linux-gnueabihf-addr2line arm-linux-gnueabihf-gcov-dump
arm-linux-gnueabihf-ar arm-linux-gnueabihf-gcov-dump-7
arm-linux-gnueabihf-as arm-linux-gnueabihf-gcov-tool
arm-linux-gnueabihf-c++filt arm-linux-gnueabihf-gcov-tool-7
arm-linux-gnueabihf-cpp arm-linux-gnueabihf-gold
arm-linux-gnueabihf-cpp-7 arm-linux-gnueabihf-gprof
arm-linux-gnueabihf-dwp arm-linux-gnueabihf-ld
arm-linux-gnueabihf-elfedit arm-linux-gnueabihf-ld.bfd
arm-linux-gnueabihf-g++ arm-linux-gnueabihf-ld.gold
arm-linux-gnueabihf-g++-7 arm-linux-gnueabihf-nm
arm-linux-gnueabihf-gcc arm-linux-gnueabihf-objcopy
arm-linux-gnueabihf-gcc-7 arm-linux-gnueabihf-objdump
arm-linux-gnueabihf-gcc-ar arm-linux-gnueabihf-pkg-config
arm-linux-gnueabihf-gcc-ar-7 arm-linux-gnueabihf-qmake
arm-linux-gnueabihf-gcc-nm arm-linux-gnueabihf-ranlib
arm-linux-gnueabihf-gcc-nm-7 arm-linux-gnueabihf-readelf
arm-linux-gnueabihf-gcc-ranlib arm-linux-gnueabihf-size
arm-linux-gnueabihf-gcc-ranlib-7 arm-linux-gnueabihf-strings
arm-linux-gnueabihf-gcov arm-linux-gnueabihf-strip
arm-linux-gnueabihf-gcov-7
安裝後可以查看編譯器信息,查看下gcc和g++
sements@ubuntu:~/developArea/qeyes$ gcc -v
Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/7/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 7.3.0-27ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --enable-multilib --disable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --disable-werror --enable-multilib --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
gcc version 7.3.0 (Ubuntu/Linaro 7.3.0-27ubuntu1~18.04)
同時,我們還可以在 pro 文件中指定使用什麼編譯器來進行編譯
QMAKE_CC=arm-linux-gnueabihf-gcc
QMAKE_CXX=arm-linux-gnueabihf-g++
QMAKE_LINK=arm-linux-gnueabihf-gcc
QMAKE_AR=arm-linux-gnueabihf-ar
QMAKE_STRIP=arm-linux-gnueabihf-strip
2 - 編譯操作
例如,我們將待編譯的qt代碼項目(qeyes)放置在了 /home/sements/developArea目錄下
然後執行qmake,生成Makefile。查看一下Makefile中的設置
sements@ubuntu:~/developArea/qeyes$ cat Makefile
#############################################################################
# Makefile for building: qeyes
# Generated by qmake (3.1) (Qt 5.9.5)
# Project: qeyes.pro
# Template: app
# Command: /usr/lib/qt5/bin/qmake -o Makefile qeyes.pro
#############################################################################
MAKEFILE = Makefile
####### Compiler, tools and options
CC = gcc
CXX = g++
DEFINES = -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB
CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
CXXFLAGS = -pipe -O2 -std=gnu++11 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
INCPATH = -I. -isystem /usr/include/arm-linux-gnueabihf/qt5 -isystem /usr/include/arm-linux-gnueabihf/qt5/QtWidgets -isystem /usr/include/arm-linux-gnueabihf/qt5/QtGui -isystem /usr/include/arm-linux-gnueabihf/qt5/QtCore -I. -I. -I/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/linux-g++
QMAKE = /usr/lib/qt5/bin/qmake
DEL_FILE = rm -f
CHK_DIR_EXISTS= test -d
MKDIR = mkdir -p
COPY = cp -f
COPY_FILE = cp -f
COPY_DIR = cp -f -R
INSTALL_FILE = install -m 644 -p
INSTALL_PROGRAM = install -m 755 -p
INSTALL_DIR = cp -f -R
QINSTALL = /usr/lib/qt5/bin/qmake -install qinstall
QINSTALL_PROGRAM = /usr/lib/qt5/bin/qmake -install qinstall -exe
DEL_FILE = rm -f
SYMLINK = ln -f -s
DEL_DIR = rmdir
MOVE = mv -f
TAR = tar -cf
COMPRESS = gzip -9f
DISTNAME = qeyes1.0.0
DISTDIR = /home/sements/developArea/qeyes/.tmp/qeyes1.0.0
LINK = g++
LFLAGS = -no-pie -Wl,-O1
LIBS = $(SUBLIBS) -lQt5Widgets -lQt5Gui -lQt5Core -lGLESv2 -lpthread
AR = ar cqs
RANLIB =
SED = sed
STRIP = strip
####### Output directory
OBJECTS_DIR = ./
####### Files
SOURCES = main.cpp \
mainwindow.cpp moc_mainwindow.cpp
OBJECTS = main.o \
mainwindow.o \
moc_mainwindow.o
DIST = /usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/unix.conf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/linux.conf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/sanitize.conf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/gcc-base.conf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/gcc-base-unix.conf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/g++-base.conf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/g++-unix.conf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/qconfig.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_concurrent.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_core.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_core_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_dbus.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_gui.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_gui_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_network.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_opengl.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_sql.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_sql_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_xml.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_xml_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/qt_functions.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/qt_config.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/linux-g++/qmake.conf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/spec_post.prf \
.qmake.stash \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/exclusive_builds.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/toolchain.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/default_pre.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/resolve_config.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/default_post.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/warn_on.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/qt.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/resources.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/moc.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/unix/opengl.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/uic.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/unix/thread.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/qmake_use.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/file_copies.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/testcase_targets.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/exceptions.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/yacc.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/lex.prf \
qeyes.pro mainwindow.h main.cpp \
mainwindow.cpp
QMAKE_TARGET = qeyes
DESTDIR =
TARGET = qeyes
first: all
####### Build rules
$(TARGET): ui_mainwindow.h $(OBJECTS)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
Makefile: qeyes.pro /usr/lib/arm-linux-gnueabihf/qt5/mkspecs/linux-g++/qmake.conf /usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/unix.conf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/linux.conf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/sanitize.conf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/gcc-base.conf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/gcc-base-unix.conf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/g++-base.conf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/g++-unix.conf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/qconfig.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_concurrent.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_core.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_core_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_dbus.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_gui.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_gui_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_network.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_opengl.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_sql.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_sql_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_xml.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_xml_private.pri \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/qt_functions.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/qt_config.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/linux-g++/qmake.conf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/spec_post.prf \
.qmake.stash \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/exclusive_builds.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/toolchain.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/default_pre.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/resolve_config.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/default_post.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/warn_on.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/qt.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/resources.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/moc.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/unix/opengl.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/uic.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/unix/thread.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/qmake_use.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/file_copies.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/testcase_targets.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/exceptions.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/yacc.prf \
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/lex.prf \
qeyes.pro \
/usr/lib/arm-linux-gnueabihf/libQt5Widgets.prl \
/usr/lib/arm-linux-gnueabihf/libQt5Gui.prl \
/usr/lib/arm-linux-gnueabihf/libQt5Core.prl
$(QMAKE) -o Makefile qeyes.pro
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/spec_pre.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/unix.conf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/linux.conf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/sanitize.conf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/gcc-base.conf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/gcc-base-unix.conf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/g++-base.conf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/common/g++-unix.conf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/qconfig.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_concurrent.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_concurrent_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_core.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_core_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_dbus.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_dbus_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_egl_support_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_fb_support_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_gui.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_gui_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_input_support_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_kms_support_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_network.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_network_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_opengl.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_opengl_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_openglextensions.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_printsupport.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_printsupport_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_service_support_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_sql.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_sql_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_testlib.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_testlib_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_theme_support_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_widgets.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_widgets_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_xml.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/modules/qt_lib_xml_private.pri:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/qt_functions.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/qt_config.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/linux-g++/qmake.conf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/spec_post.prf:
.qmake.stash:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/exclusive_builds.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/toolchain.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/default_pre.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/resolve_config.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/default_post.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/warn_on.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/qt.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/resources.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/moc.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/unix/opengl.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/uic.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/unix/thread.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/qmake_use.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/file_copies.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/testcase_targets.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/exceptions.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/yacc.prf:
/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/lex.prf:
qeyes.pro:
/usr/lib/arm-linux-gnueabihf/libQt5Widgets.prl:
/usr/lib/arm-linux-gnueabihf/libQt5Gui.prl:
/usr/lib/arm-linux-gnueabihf/libQt5Core.prl:
qmake: FORCE
@$(QMAKE) -o Makefile qeyes.pro
qmake_all: FORCE
all: Makefile $(TARGET)
dist: distdir FORCE
(cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR)
distdir: FORCE
@test -d $(DISTDIR) || mkdir -p $(DISTDIR)
$(COPY_FILE) --parents $(DIST) $(DISTDIR)/
$(COPY_FILE) --parents /usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/data/dummy.cpp $(DISTDIR)/
$(COPY_FILE) --parents mainwindow.h $(DISTDIR)/
$(COPY_FILE) --parents main.cpp mainwindow.cpp $(DISTDIR)/
$(COPY_FILE) --parents mainwindow.ui $(DISTDIR)/
clean: compiler_clean
-$(DEL_FILE) $(OBJECTS)
-$(DEL_FILE) *~ core *.core
distclean: clean
-$(DEL_FILE) $(TARGET)
-$(DEL_FILE) .qmake.stash
-$(DEL_FILE) Makefile
####### Sub-libraries
mocclean: compiler_moc_header_clean compiler_moc_source_clean
mocables: compiler_moc_header_make_all compiler_moc_source_make_all
check: first
benchmark: first
compiler_rcc_make_all:
compiler_rcc_clean:
compiler_moc_predefs_make_all: moc_predefs.h
compiler_moc_predefs_clean:
-$(DEL_FILE) moc_predefs.h
moc_predefs.h: /usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/data/dummy.cpp
g++ -pipe -O2 -std=gnu++11 -Wall -W -dM -E -o moc_predefs.h /usr/lib/arm-linux-gnueabihf/qt5/mkspecs/features/data/dummy.cpp
compiler_moc_header_make_all: moc_mainwindow.cpp
compiler_moc_header_clean:
-$(DEL_FILE) moc_mainwindow.cpp
moc_mainwindow.cpp: mainwindow.h \
moc_predefs.h \
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/linux-g++ -I/home/sements/developArea/qeyes -I/usr/include/arm-linux-gnueabihf/qt5 -I/usr/include/arm-linux-gnueabihf/qt5/QtWidgets -I/usr/include/arm-linux-gnueabihf/qt5/QtGui -I/usr/include/arm-linux-gnueabihf/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/arm-linux-gnueabihf/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/arm-linux-gnueabihf/7/include -I/usr/local/include -I/usr/lib/gcc/arm-linux-gnueabihf/7/include-fixed -I/usr/include/arm-linux-gnueabihf -I/usr/include mainwindow.h -o moc_mainwindow.cpp
compiler_moc_source_make_all:
compiler_moc_source_clean:
compiler_uic_make_all: ui_mainwindow.h
compiler_uic_clean:
-$(DEL_FILE) ui_mainwindow.h
ui_mainwindow.h: mainwindow.ui \
/usr/lib/qt5/bin/uic
/usr/lib/qt5/bin/uic mainwindow.ui -o ui_mainwindow.h
compiler_yacc_decl_make_all:
compiler_yacc_decl_clean:
compiler_yacc_impl_make_all:
compiler_yacc_impl_clean:
compiler_lex_make_all:
compiler_lex_clean:
compiler_clean: compiler_moc_predefs_clean compiler_moc_header_clean compiler_uic_clean
####### Compile
main.o: main.cpp mainwindow.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
mainwindow.o: mainwindow.cpp mainwindow.h \
ui_mainwindow.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp
moc_mainwindow.o: moc_mainwindow.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindow.o moc_mainwindow.cpp
####### Install
install_target: first FORCE
@test -d $(INSTALL_ROOT)/opt/qeyes/bin || mkdir -p $(INSTALL_ROOT)/opt/qeyes/bin
-$(QINSTALL_PROGRAM) $(QMAKE_TARGET) $(INSTALL_ROOT)/opt/qeyes/bin/$(QMAKE_TARGET)
-$(STRIP) $(INSTALL_ROOT)/opt/qeyes/bin/$(QMAKE_TARGET)
uninstall_target: FORCE
-$(DEL_FILE) $(INSTALL_ROOT)/opt/qeyes/bin/$(QMAKE_TARGET)
-$(DEL_DIR) $(INSTALL_ROOT)/opt/qeyes/bin/
install: install_target FORCE
uninstall: uninstall_target FORCE
FORCE:
注意查看下CC,CXX以及LFLAGS中是否加入了-no-pie來避免編譯成共享庫文件
執行make,不用多線程的話稍微有點慢
make -j8
就可以看到生成了可在嵌入式設備上運行的可執行文件,但是注意,這樣編譯出來的是基於共享庫的,非靜態庫連接的程序,所以需要嵌入式設備上搭建qt環境(簡單粗暴直接在嵌入式設備上apt install qt5-default)
sements@ubuntu:~/developArea/qeyes$ ldd qeyes
libQt5Widgets.so.5 => /usr/lib/arm-linux-gnueabihf/libQt5Widgets.so.5 (0xff3bd000)
libQt5Gui.so.5 => /usr/lib/arm-linux-gnueabihf/libQt5Gui.so.5 (0xff087000)
libQt5Core.so.5 => /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5 (0xfecbc000)
libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xfeba9000)
libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xfeb28000)
libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xfeaff000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xfea07000)
/lib/ld-linux-armhf.so.3 (0xfffc6000)
libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xfe9e2000)
libGLESv2.so.2 => /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2 (0xfe9c4000)
libpng16.so.16 => /usr/lib/arm-linux-gnueabihf/libpng16.so.16 (0xfe994000)
libharfbuzz.so.0 => /usr/lib/arm-linux-gnueabihf/libharfbuzz.so.0 (0xfe912000)
libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0xfe8e6000)
libicui18n.so.60 => /usr/lib/arm-linux-gnueabihf/libicui18n.so.60 (0xfe71d000)
libicuuc.so.60 => /usr/lib/arm-linux-gnueabihf/libicuuc.so.60 (0xfe5e7000)
libdouble-conversion.so.1 => /usr/lib/arm-linux-gnueabihf/libdouble-conversion.so.1 (0xfe5c9000)
libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xfe5b6000)
libglib-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libglib-2.0.so.0 (0xfe4d9000)
libGLdispatch.so.0 => /usr/lib/arm-linux-gnueabihf/libGLdispatch.so.0 (0xfe45b000)
libfreetype.so.6 => /usr/lib/arm-linux-gnueabihf/libfreetype.so.6 (0xfe3e0000)
libgraphite2.so.3 => /usr/lib/arm-linux-gnueabihf/libgraphite2.so.3 (0xfe3b5000)
libicudata.so.60 => /usr/lib/arm-linux-gnueabihf/libicudata.so.60 (0xfc9fc000)
libpcre.so.3 => /lib/arm-linux-gnueabihf/libpcre.so.3 (0xfc99d000)