交叉编译在x86上调试好的qt程序

这篇博客介绍了如何在x86系统上使用交叉编译来调试针对ARM平台的Qt应用程序。主要内容包括修改项目的.pro文件,确保链接的是交叉编译的arm版本的libx264库,并且详细展示了使用交叉编译工具链进行编译和链接的过程。

修改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 stripped
shell.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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值