移植QT到ZedBoard(制作运行库镜像) 交叉编译 分类: ubuntu shell ZedBoard OpenCV 2014-11-08 18:49 219人阅读 评论(0) 收藏
制作运行库
由于ubuntu的Qt运行库在/usr/local/Trolltech/Qt-4.7.3/下,由makefile可以看到引用运行库是
INCPATH = -I/usr/local/Trolltech/Qt-4.7.3/mkspecs/default -I. -I/usr/local/Trolltech/Qt-4.7.3/include/QtCore -I/usr/local/Trolltech/Qt-4.7.3/include/QtNetwork -I/usr/local/Trolltech/Qt-4.7.3/include/QtGui -I/usr/local/Trolltech/Qt-4.7.3/include -I. -I. -I.
因此如果将编译后的可执行文件在ZedBoard上运行,也许早在相应的路径下找到运行库文件。Xilinx给出了Qt运行库镜像的制作方法:切换到qt-everywhere-opensource-src-4.7.3.tar.gz的解压路径,在控制台中输入
dd if=/dev/zero of=qt_lib_ext4.img bs=1M count=80
mkfs.ext4 -F qt_lib_ext4.img
chmod go+w qt_lib_ext4.img
mount qt_lib_ext4.img -o loop /mnt
cp -rf /usr/local/Trolltech/Qt-4.7.3/* /mnt
chmod go-w qt_lib_ext4.img
umount /mnt
即可。能找到生成的库文件镜像文件qt_lib_ext4.img,使用时将其挂载到
/usr/local/Trolltech/Qt-4.7.3/
即可。
此时在/opt/zedboard/qt/build 下面的文件qt_lib.img就是qt的库文件啦
至此qt移植成功了。要把qt的程序在板卡上运行,必须需要一个可执行文件,已我们上一节的helloworld为例
在工程路径下,使用命令
qmake -project
生成新的工程文件lab2_qt_camera.pro。再使用
qmake
生成makefile文件,打开makefile文件可以看到
1 ############################################################################# 2 # Makefile for building: lab2_qt_camera 3 # Generated by qmake (2.01a) (Qt 4.7.3) on: Sun Dec 23 02:24:47 2012 4 # Project: lab2_qt_camera.pro 5 # Template: app 6 # Command: /usr/local/Trolltech/Qt-4.7.3/bin/qmake -o Makefile lab2_qt_camera.pro 7 ############################################################################# 8 9 ####### Compiler, tools and options 10 11 CC = ${CROSS_COMPILE}gcc 12 CXX = ${CROSS_COMPILE}g++ 13 DEFINES = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED 14 CFLAGS = ${CROSS_COMPILE_CFLAGS} -I$(ZYNQ_QT_INSTALL)/include -DZYNQ -O2 -Wall -W -D_REENTRANT $(DEFINES) 15 CXXFLAGS = ${CROSS_COMPILE_CPPFLAGS} -I$(ZYNQ_QT_INSTALL)/include -DZYNQ -O2 -Wall -W -D_REENTRANT $(DEFINES) 16 INCPATH = -I/usr/local/Trolltech/Qt-4.7.3/mkspecs/default -I. -I/usr/local/Trolltech/Qt-4.7.3/include/QtCore -I/usr/local/Trolltech/Qt-4.7.3/include/QtNetwork -I/usr/local/Trolltech/Qt-4.7.3/include/QtGui -I/usr/local/Trolltech/Qt-4.7.3/include -I. -I. -I. 17 LINK = ${CROSS_COMPILE}g++ 18 LFLAGS = -L$(ZYNQ_QT_INSTALL)/lib -Wl,-O1 -Wl,-rpath,/usr/local/Trolltech/Qt-4.7.3/lib 19 LIBS = $(SUBLIBS) -L/usr/local/Trolltech/Qt-4.7.3//lib -lQtGui -L/usr/local/Trolltech/Qt-4.7.3//lib -lQtNetwork -lQtCore -lpthread 20 AR = ${CROSS_COMPILE}ar cqs 21 RANLIB = 22 QMAKE = /usr/local/Trolltech/Qt-4.7.3/bin/qmake 23 TAR = tar -cf 24 COMPRESS = gzip -9f 25 COPY = cp -f 26 SED = sed 27 COPY_FILE = $(COPY) 28 COPY_DIR = $(COPY) -r 29 STRIP = ${CROSS_COMPILE}strip 30 INSTALL_FILE = install -m 644 -p 31 INSTALL_DIR = $(COPY_DIR) 32 INSTALL_PROGRAM = install -m 755 -p 33 DEL_FILE = rm -f 34 SYMLINK = ln -f -s 35 DEL_DIR = rmdir 36 MOVE = mv -f 37 CHK_DIR_EXISTS= test -d 38 MKDIR = mkdir -p 39 40 ####### Output directory 41 42 OBJECTS_DIR = ./ 43 44 ####### Files 45 46 SOURCES = main.cpp \ 47 mainwindow.cpp \ 48 v4l2grab.c moc_mainwindow.cpp 49 OBJECTS = main.o \ 50 mainwindow.o \ 51 v4l2grab.o \ 52 moc_mainwindow.o
#之后省略
使用的gcc是 ${CROSS_COMPILE}gcc,也就是arm-xilinx-linux-gnueabi-gcc,g++ 是${CROSS_COMPILE}g++,也就是arm-xilinx-linux-gnueabi-g++;因而编译后的可执行文件是可以再Zed上 运行的。再使用
make
生成可执行文件lab2_qt_camera。(可执行文件名默认和你的工程目录相同)