修改pro项目文件,将连接的外部库改为交叉编译过的arm平台上的。主要是libx264
shell.albert@yantai:~/project/EAVCapture> cat EAVCaptureARM.pro
#-------------------------------------------------
#
# Project created by QtCreator 2015-05-04T19:43:15
#
#-------------------------------------------------
QT += core gui network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = EAVCapture
TEMPLATE = app
SOURCES += main.cpp\
BaseParts/zbasedialog.cpp \
CameraDevice/zcameradevice.cpp \
CameraDevice/zcamerathread.cpp \
H264/zh264codec.cpp \
FIFO/zyuvfifo.cpp \
H264/zh264encodethread.cpp \
FIFO/zh264fifo.cpp \
BaseParts/ztaskbar.cpp \
MainUI/zmainwindow.cpp \
BaseParts/zstatusbar.cpp \
BaseParts/zbaseframe.cpp \
BaseParts/zbasecanvas.cpp \
H264/zh264decodethread.cpp \
MainUI/zgoodsselect.cpp \
BaseParts/zgoodsbutton.cpp \
BaseParts/zactionlabel.cpp \
NetworkSender/zudpsender.cpp \
NetworkSender/zudpsenderthread.cpp \
NetworkSender/ztcpsender.cpp \
NetworkSender/ztcpsenderthread.cpp \
Parameters/ZParameters.cpp \
BaseParts/zcoolbutton.cpp \
GPSDevice/zgpsdevice.cpp \
GPSDevice/zgpsthread.cpp \
MainUI/zfilemanager.cpp \
MainUI/zhomenavigator.cpp
HEADERS += BaseParts/zbasedialog.h \
CameraDevice/zcameradevice.h \
CameraDevice/zcamerathread.h \
H264/zh264codec.h \
FIFO/zyuvfifo.h \
H264/zh264encodethread.h \
FIFO/zh264fifo.h \
BaseParts/ztaskbar.h \
MainUI/zmainwindow.h \
BaseParts/zstatusbar.h \
BaseParts/zbaseframe.h \
BaseParts/zbasecanvas.h \
H264/zh264decodethread.h \
Parameters/zparameters.h \
MainUI/zgoodsselect.h \
BaseParts/zgoodsbutton.h \
BaseParts/zactionlabel.h \
NetworkSender/zudpsender.h \
NetworkSender/zudpsenderthread.h \
NetworkSender/ztcpsender.h \
NetworkSender/ztcpsenderthread.h \
BaseParts/zcoolbutton.h \
GPSDevice/zgpsdevice.h \
GPSDevice/zgpsthread.h \
MainUI/zfilemanager.h \
MainUI/zhomenavigator.h
LIBS += -L/home/shell.albert/project/iMX6Build/libimx6/libx264arm/lib -lx264
INCLUDEPATH += /home/shell.albert/project/iMX6Build/libimx6/libx264arm/include
DEPENDPATH += /home/shell.albert/project/iMX6Build/libimx6/libx264arm/include
RESOURCES += \
Resources/EAVRes.qrc
使用交叉编译后生成的qmake编译(不要使用系统自带的x86下的噢。)
shell.albert@yantai:~/project/EAVCapture> /home/shell.albert/libqt5.3.2/bin/qmake EAVCaptureARM.pro
shell.albert@yantai:~/project/EAVCapture> make
/home/shell.albert/tools/toolschain_arm/4.4.3/bin/arm-none-linux-gnueabi-g++ -c -pipe --sysroot=/home/shell.albert/tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB
-DQT_CORE_LIB -I../../libqt5.3.2/mkspecs/linux-arm-gnueabi-g++ -I. -I../iMX6Build/libimx6/libx264arm/include -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtWidgets
-I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtNetwork -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtGui -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtCore
-I. -o main.o main.cpp
/home/shell.albert/tools/toolschain_arm/4.4.3/bin/arm-none-linux-gnueabi-g++ -c -pipe --sysroot=/home/shell.albert/tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB
-DQT_CORE_LIB -I../../libqt5.3.2/mkspecs/linux-arm-gnueabi-g++ -I. -I../iMX6Build/libimx6/libx264arm/include -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtWidgets
-I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtNetwork -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtGui -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtCore
-I. -o zbasedialog.o BaseParts/zbasedialog.cpp
/home/shell.albert/tools/toolschain_arm/4.4.3/bin/arm-none-linux-gnueabi-g++ -c -pipe --sysroot=/home/shell.albert/tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB
-DQT_CORE_LIB -I../../libqt5.3.2/mkspecs/linux-arm-gnueabi-g++ -I. -I../iMX6Build/libimx6/libx264arm/include -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtWidgets
-I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtNetwork -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtGui -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtCore
-I. -o zcameradevice.o CameraDevice/zcameradevice.cpp
/home/shell.albert/tools/toolschain_arm/4.4.3/bin/arm-none-linux-gnueabi-g++ -c -pipe --sysroot=/home/shell.albert/tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB
-DQT_CORE_LIB -I../../libqt5.3.2/mkspecs/linux-arm-gnueabi-g++ -I. -I../iMX6Build/libimx6/libx264arm/include -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtWidgets
-I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtNetwork -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtGui -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtCore
-I. -o zcamerathread.o CameraDevice/zcamerathread.cpp
/home/shell.albert/tools/toolschain_arm/4.4.3/bin/arm-none-linux-gnueabi-g++ -c -pipe --sysroot=/home/shell.albert/tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB
-DQT_CORE_LIB -I../../libqt5.3.2/mkspecs/linux-arm-gnueabi-g++ -I. -I../iMX6Build/libimx6/libx264arm/include -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtWidgets
-I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtNetwork -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtGui -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtCore
-I. -o zh264codec.o H264/zh264codec.cpp
H264/zh264codec.cpp: In member function 'void ZH264Codec::ZSlotDoEncode()':
H264/zh264codec.cpp:256: warning: unused variable 'ret'
H264/zh264codec.cpp: At global scope:
H264/zh264codec.cpp:263: warning: unused parameter 'h264Data'
H264/zh264codec.cpp:263: warning: unused parameter 'h264DataSize'
H264/zh264codec.cpp:434: warning: unused parameter 'yPlane'
H264/zh264codec.cpp:434: warning: unused parameter 'uPlane'
H264/zh264codec.cpp:434: warning: unused parameter 'vPlane'
H264/zh264codec.cpp:434: warning: unused parameter 'rgbBuffer'
H264/zh264codec.cpp:434: warning: unused parameter 'width'
H264/zh264codec.cpp:434: warning: unused parameter 'height'
../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtCore/qgenericatomic.h: In member function 'qint32 ZH264Codec::ZDecodeX264(quint8*, qint32)':
../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtCore/qgenericatomic.h:98: warning: dereferencing pointer '<anonymous>' does break strict-aliasing rules
../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtCore/qbytearray.h:427: note: initialized from here
../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtCore/qgenericatomic.h:98: warning: dereferencing pointer '<anonymous>' does break strict-aliasing rules
../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtCore/qbytearray.h:427: note: initialized from here
/home/shell.albert/tools/toolschain_arm/4.4.3/bin/arm-none-linux-gnueabi-g++ -c -pipe --sysroot=/home/shell.albert/tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB
-DQT_CORE_LIB -I../../libqt5.3.2/mkspecs/linux-arm-gnueabi-g++ -I. -I../iMX6Build/libimx6/libx264arm/include -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtWidgets
-I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtNetwork -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtGui -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtCore
-I. -o zyuvfifo.o FIFO/zyuvfifo.cpp
/home/shell.albert/tools/toolschain_arm/4.4.3/bin/arm-none-linux-gnueabi-g++ -c -pipe --sysroot=/home/shell.albert/tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB
-DQT_CORE_LIB -I../../libqt5.3.2/mkspecs/linux-arm-gnueabi-g++ -I. -I../iMX6Build/libimx6/libx264arm/include -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtWidgets
-I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtNetwork -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtGui -I../../tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/include/QtCore
-I. -o moc_zhomenavigator.o moc_zhomenavigator.cpp
/home/shell.albert/tools/toolschain_arm/4.4.3/bin/arm-none-linux-gnueabi-g++ --sysroot=/home/shell.albert/tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root -Wl,-O1 -Wl,-rpath,/home/shell.albert/libqt5.3.2/lib -o EAVCapture main.o zbasedialog.o zcameradevice.o
zcamerathread.o zh264codec.o zyuvfifo.o zh264encodethread.o zh264fifo.o ztaskbar.o zmainwindow.o zstatusbar.o zbaseframe.o zbasecanvas.o zh264decodethread.o zgoodsselect.o zgoodsbutton.o zactionlabel.o zudpsender.o zudpsenderthread.o ztcpsender.o ztcpsenderthread.o
ZParameters.o zcoolbutton.o zgpsdevice.o zgpsthread.o zfilemanager.o zhomenavigator.o qrc_EAVRes.o moc_zbasedialog.o moc_zcameradevice.o moc_zcamerathread.o moc_zh264codec.o moc_zyuvfifo.o moc_zh264encodethread.o moc_zh264fifo.o moc_ztaskbar.o moc_zmainwindow.o
moc_zstatusbar.o moc_zbaseframe.o moc_zbasecanvas.o moc_zh264decodethread.o moc_zgoodsselect.o moc_zgoodsbutton.o moc_zactionlabel.o moc_zudpsender.o moc_zudpsenderthread.o moc_ztcpsender.o moc_ztcpsenderthread.o moc_zcoolbutton.o moc_zgpsdevice.o moc_zgpsthread.o
moc_zfilemanager.o moc_zhomenavigator.o -L/home/shell.albert/project/iMX6Build/libimx6/libx264arm/lib -lx264 -L/home/shell.albert/tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root/home/shell.albert/libqt5.3.2/lib -lQt5Widgets -L/home/shell.albert/libqt5.3.2/lib
-lQt5Network -lQt5Gui -lQt5Core -lpthread
编译完了,看一下编译出来的文件信息
shell.albert@yantai:~/project/EAVCapture> file EAVCapture
EAVCapture: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, not strippedshell.albert@yantai:~/project/EAVCapture> arm-linux-readelf -a EAVCapture | grep "Shared"
0x00000001 (NEEDED) Shared library: [libx264.so.142]
0x00000001 (NEEDED) Shared library: [libQt5Widgets.so.5]
0x00000001 (NEEDED) Shared library: [libQt5Network.so.5]
0x00000001 (NEEDED) Shared library: [libQt5Gui.so.5]
0x00000001 (NEEDED) Shared library: [libQt5Core.so.5]
0x00000001 (NEEDED) Shared library: [libpthread.so.0]
0x00000001 (NEEDED) Shared library: [libstdc++.so.6]
0x00000001 (NEEDED) Shared library: [libm.so.6]
0x00000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x00000001 (NEEDED) Shared library: [libc.so.6]
shell.albert@yantai:~/project/EAVCapture>
这篇博客介绍了如何在x86系统上使用交叉编译来调试针对ARM平台的Qt应用程序。主要内容包括修改项目的.pro文件,确保链接的是交叉编译的arm版本的libx264库,并且详细展示了使用交叉编译工具链进行编译和链接的过程。

4164

被折叠的 条评论
为什么被折叠?



