当前位置:编程学习 > wap >>

linux系统下qt2.2建立动态链接库问题

我用的是linux系统,安装的是很早的QT2.2版本。想把一个cpp文件和h文件做成动态链接库,使用$ gcc test_a.cpp -fPIC -shared -o libtest.so命令,编译成一个动态库:libtest.so。对于下面的cpp和h文件是可以的
//so_test.h:
#include "stdio.h"
void test_a();
//test_a.cpp:
#include "so_test.h"
void test_a()
{
printf("this is in test_a...\n");
}
但是因为很多文件都需要用到qlineedit.h或者qlabel.h这些qt自带的类,导致用上面的命令时,总提示
error:qlabel.h:no such file or directory这样的错误。
尝试将qlabel.h文件找到,与cpp文件一起来编译,仍然有这样的问题。希望各位帮忙看看有什么解决方法么?多谢! 动态链接库 qt linux --------------------编程问答-------------------- 这个肯定是文件目录不对啊,这应该是编译器配置问题,你在编译的时候应指定搜索路径,设置编译器的搜索目录 --------------------编程问答-------------------- 搜索路径是通过-L -lm来添加么?因为是初学者,不是很清楚 --------------------编程问答-------------------- 你设置了qt的环境变量了吗? 板子上面要设置好qt的环境变量 --------------------编程问答-------------------- 我在语句中增加了(-I/目录地址)(目录地址指的是qt自带的头文件所在的目录),no such file or directory之类的错误没有了,但是出现了很多qt自带的头文件相关的错误。比如
/usr/local/Trolltech/QtEmbedded-4.6.3-arm/include/Qt/qstring.h:76: error: 'QT_BEGIN_HEADER' does not name a type
/usr/local/Trolltech/QtEmbedded-4.6.3-arm/include/Qt/qstring.h:90: error: function definition does not declare parameters
/usr/local/Trolltech/QtEmbedded-4.6.3-arm/include/Qt/qstring.h:643: error: function definition does not declare parameters
/usr/local/Trolltech/QtEmbedded-4.6.3-arm/include/Qt/qstring.h:683: error: 'QString' has not been declared
头文件肯定是没法改的,错误该怎么消除? --------------------编程问答-------------------- 已经将/etc/profile中添加了qt的环境变量,运行类似$ gcc test_a.cpp -fPIC -shared -o libtest.so的命令时,还是会出现1楼的错误 --------------------编程问答--------------------
引用 4 楼 liuzhupiaoyang 的回复:
我在语句中增加了(-I/目录地址)(目录地址指的是qt自带的头文件所在的目录),no such file or directory之类的错误没有了,但是出现了很多qt自带的头文件相关的错误。比如
/usr/local/Trolltech/QtEmbedded-4.6.3-arm/include/Qt/qstring.h:76: error: 'QT_BEGIN_HEADER' does not name a type
/usr/local/Trolltech/QtEmbedded-4.6.3-arm/include/Qt/qstring.h:90: error: function definition does not declare parameters
/usr/local/Trolltech/QtEmbedded-4.6.3-arm/include/Qt/qstring.h:643: error: function definition does not declare parameters
/usr/local/Trolltech/QtEmbedded-4.6.3-arm/include/Qt/qstring.h:683: error: 'QString' has not been declared
头文件肯定是没法改的,错误该怎么消除?

这个qt 2.3的头文件是有问题的,当时我编译的时候就边改边编译,搞了好长时间才ok. 我用的是hisi平台,交叉编译器是arm-linux-hismall-XX . 我把我写的交叉编译的小脚本给你看看吧

文件名: mk.sh
MYHOMEPATH=/public/qt

export QT2DIR=$MYHOMEPATH/qt-2.3.2
export QTEDIR=$MYHOMEPATH/qt-2.3.10-target
export TMAKEDIR=$MYHOMEPATH/tmake-1.13
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
export QTDIR=$QTEDIR
export PATH=$QTDIR/bin:$PATH
export PATH=$TMAKEDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$QT2DIR/lib:$TMAKEDIR/lib:$LD_BRARY_PATH
export LD_LIBRARY_PATH=/opt/hisi-linux/X86-arm/gcc-3.4.3-uClibc-0.9.28/lib:$LD_LIBRARY_PATH

每次编译之前,我首先souce mk.sh 然后再进行编译 
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,