QT交叉编译时怎么添加静态库,急!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT交叉编译时怎么添加静态库,急!!!相关的知识,希望对你有一定的参考价值。

新手,交叉编译器应该是安装好了,程序写完了后输入编译命令
/opt/EmbedSky/qt-4.5/__install/arm/bin/qmake -project
/opt/EmbedSky/qt-4.5/__install/arm/bin/qmake
make
(自己乱试的,不知道是不是这样编译)
在板子上运行的时候提示错误:
error while loading shared libraries:libQtGui.so.4:cannot open shareed object file:No such file or directory
查看Makefile,以下是部分Makefile文件:
CC = arm-linux-gcc
CXX = arm-linux-g++
DEFINES = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
INCPATH = -I../EmbedSky/qt-4.5/__install/arm/mkspecs/default -I. -I../EmbedSky/qt-4.5/__install/arm/include/QtCore -I../EmbedSky/qt-4.5/__install/arm/include/QtNetwork -I../EmbedSky/qt-4.5/__install/arm/include/QtGui -I../EmbedSky/qt-4.5/__install/arm/include -I. -I. -I.
LINK = arm-linux-g++
LFLAGS = -Wl,-O1 -Wl,-rpath,/opt/EmbedSky/qt-4.5/__install/arm/lib
LIBS = $(SUBLIBS) -L/opt/EmbedSky/qt-4.5/__install/arm//lib -lQtGui -L/tslib-1.4/lib -L/opt/EmbedSky/qt-4.5/__install/arm//lib -lts -lQtNetwork -lQtCore -lm -lrt -ldl -lpthread
AR = arm-linux-ar cqs
RANLIB =
QMAKE = /opt/EmbedSky/qt-4.5/__install/arm/bin/qmake
TAR = tar -cf
COMPRESS = gzip -9f
COPY = cp -f
SED = sed
COPY_FILE = $(COPY)
COPY_DIR = $(COPY) -r
INSTALL_FILE = install -m 644 -p
INSTALL_DIR = $(COPY_DIR)
INSTALL_PROGRAM = install -m 755 -p
DEL_FILE = rm -f
SYMLINK = ln -sf
DEL_DIR = rmdir
MOVE = mv -f
CHK_DIR_EXISTS= test -d
MKDIR = mkdir -p
开发板用的是原厂自带的系统,不知道有没有QT环境
看错误提示应该是开发板上找不到Qt的库,用静态连接库行不行,应该怎么做?
还有一个问题是我的虚拟机能ping通主机,主机能ping通开发板,但是虚拟机ping不通开发板,这样虚拟机和开发板之间能不能通过socket通信,该如何解决?
很急,谢谢了

INCPATH = -I../EmbedSky/qt-4.5/__install/arm/mkspecs/default -I. -I../EmbedSky/qt-4.5/__install/arm/include/QtCore -I../EmbedSky/qt-4.5/__install/arm/include/QtNetwork -I../EmbedSky/qt-4.5/__install/arm/include/QtGui -I../EmbedSky/qt-4.5/__install/arm/include -I. -I. -I.
在这里增加你编译的静态库。。。可以试试,我也是新手追问

额。。。静态库。。。怎么加啊?

追答

说错了 是往这里面加
LIBS = $(SUBLIBS) -L/opt/EmbedSky/qt-4.5/__install/arm//lib -lQtGui -L/tslib-1.4/lib -L/opt/EmbedSky/qt-4.5/__install/arm//lib -lts -lQtNetwork -lQtCore -lm -lrt -ldl -lpthread

-L/绝对路径 -l库

追问

但是怎么编译成静态的呢?

追答

把你写的那个.c文件编译成。o再编译成库
1、 gcc -o xx.c
2、 ar -crv libxx.a xx.o //编译库文件所依赖的.o文件

参考技术A 你要先用交叉编译把qt的源代码编译成可以在嵌入系统中运行的库.然后把库放进板子,设置环境变量.然后运行你的应用程序就可以了.ping不通应该不能通讯.看你虚拟机的网卡是桥接方式还是共享方式.要调试你得使用桥接方式追问

怎么把qt的源代码编译成在嵌入式系统中运行的库啊,放进板子倒是会,设置环境变量又不会了,能麻烦你再讲详细一些么,另外我是选择的桥接方式啊,IP段也改了,防火墙、杀毒软件这些都关了,还是ping不通,我都要崩溃了

追答

一言难尽,别着急,慢慢来.最好找有经验的身边的人问问.网上问比较局限.因为太复杂一言难尽

以上是关于QT交叉编译时怎么添加静态库,急!!!的主要内容,如果未能解决你的问题,请参考以下文章

makefile 交叉编译怎么引用静态库

带有自定义共享库的 Qt 项目交叉编译 Qt

当静态库不可用时,是不是可以从 linux 交叉编译 Windows?

imx6ull+debian10 构建静态qt交叉编译环境

如何在 ARM 交叉编译时选择要链接的静态库?

如何交叉编译 动态库