linux qt creator 怎么添加自己编译的库

linux qt creator 怎么添加自己编译的库,第1张

比如我需要添加一个叫*.so.*的文件,这个*.so文件在/etc目录下(随便定的目录)

在.pro文件里添加:

LIBS

+=

-L

/etc/

-l*

在.cpp引用的时候,还需要把相关的

头文件

包含进去

先写好实现动态链接库的libmy.cpp文件和libmy.h文件,如下:

// libmy.cpp

#include"libmy.h" 

#include<iostream>

using namespace std

MyLib::MyLib() 

}

MyLib::~MyLib() 

}

void MyLib::hello() 

{     

 cout <<"hello world~!" <<endl

}

// libmy.h文件

#ifndef  LIBMY_H 

#define  LIBMY_H  

class MyLib

public:     

 MyLib()     

 ~MyLib()       

 void hello() 

#endif  /*LIBMY_H*/

然后写好pro文件,如下:

TEMPLATE = lib 

TARGET =DllTest

HEADERS += libmy.h 

SOURCES += libmy.cpp

保存关闭,文件名命名为MyDll.pro

在Shell里执行qmake MyDll.pro,在没有错误的情况下,然后执行make ,可以看到生成了几个后缀名为so的文件,如下图:

证明生成动态链接库成功。然后编写测试动态链接库的主函数,如下:

#include"libmy.h" 

#include<iostream>

using namespace std

int main(int argc,char *argv[]) 

{     

       MyLib *lib = new MyLib()       // 调用刚才编写的动态链接库

       lib->hello()         

        cout <<"danshiming " <<endl

        int i

        cin >>i

       return 1 

}

编写main.pro文件,如下:

LIBS += -L ./                               # 设置程序查找动态库的目录为当前目录

# 注意:用QT生成的动态库默认都加了lib前缀和扩展名及版本名,但调用时不用加lib,不用加文件

# 扩展名so、不用加版本名1.0.0.即下面LIBS中的DllTest就是实际的动态库libDllTest.so.1.0.0

LIBS+=-lDllTest  #注意:调用时不用加lib,不用加文件扩展名so、不用加版本名1.0.0,记得前面加l(字母)

TARGET = libMyTest

SOURCES += main.cpp

执行qmake main.pro生成makefile文件,然后执行make,可以看到生成了libMyTest可执行文件。

将动态链接库libDllTest.so.1.0.0和可执行文件传到arm板上,如下:

在arm板上执行libMyTest,如下:

# chmod +x  libMyTest    // 先赋予可执行权限

执行:

#  ./libMyTest

输出如下:

准备工作:首先,最不可思议的,是要在Linux下把QT编译一遍,因为库都是一样的,需要的就是一些Windows下的qmake、moc、uic之类的工具而已。因为QT源码很多地方不能在Windows下面交叉编译通过,虽然我改了一些代码和配置(一会儿我贴出补丁来),但我只用它编译了qtbase、qtdeclarative这两个模块和qttools模块中的一部分。

Linux下的编译可以参照我之前写的这篇文章。参考配置:

开发包:

./configure -extprefix /opt/qt/5.2.1/arm -prefix /usr -plugindir /usr/lib/qt/plugins -importdir /usr/lib/qt/imports -qmldir /usr/lib/qt/qml -make libs -xplatform linux-arm-gnueabi-g++ -opengl es2 -confirm-license -opensource -xcb -xinput2 -nomake examples -nomake tests -qt-zlib -qt-xcb -dbus -largefile -cups -no-fontconfig -glib -gtkstyle -qt-freetype -sysroot /opt/sysroot-arm -mysql_config /opt/sysroot-arm/usr/bin/mysql_config -v


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11663876.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存