Qt在linux系统上使用技巧
路径表示
Windows操作系统可用"\"或"/"表示路径,Unix操作系统用"/"表示路径。综合,qt最好用“/”表示路径。
第三方静态库和动态库
lib文件:(依据编译器) MSVC编译器是生成.lib 文件。 mingw编译器生成.a 文件。linux平台无lib文件。
dll文件:(依据平台) ???windows平台是.dll 文件,unix平台是.so
对于windows的msvc系统,有.lib和.dll文件。配置LIBS+= 就是配置.lib文件。
对于windows的mingw系统,有.a和.dll文件。配置LIBS+= 就是配置.a文件。
对于linux系统,只有.so文件。配置LIBS+= 就是配置.so文件。
第三方配置LIBS目录做法
LIBS += somepath 这个可以多行写,也可以用“\”隔行
第一种办法:
可以用-L指定目录,-l指定库的名称(无需后缀,.lib,.a, .so都适用,这样就不用区分到底是哪种)
优点:windows和linux平台通用
如在windows msvc环境下,有bin目录下有log4qt.lib、log4qt.dll。
Pro配置文件写: LIBS += -L$$PWD/../bin -llog4qt
实际上就是配置log4qt.lib。
如在linux 环境下有bin目录下只有liblog4qt.so
Pro配置文件写: LIBS += -L$$PWD/../bin -llog4qt
实际上就是配置liblog4qt.so。
第二种办法:
直接通过绝对路径和相对路径指定库的完整path(需后缀,.lib,.a, .so都适用),相对路径用$$pwd前缀,路径不允许空格。
缺点是:在windows和linux平台不通用,各自平台需要单独配置。
如在windows msvc环境下,有bin目录下有log4qt.lib、log4qt.dll。
Pro配置文件写: LIBS += $$PWD/../bin/log4qt.lib
实际上就是配置log4qt.lib。
如在linux 环境下有bin目录下只有liblog4qt.so
Pro配置文件写: LIBS += $$PWD/../bin/liblog4qt.so
实际上就是配置liblog4qt.so。
Linux下QT生成的(.so)、(.so.1)、(.so.1.0)、(.so.1.0.0)之间的区别
.so?即 linux 下的共享库(Shared library),或称动态库
QT在生成动态库时,会默认生成(.so)、(.so.1)、(.so.1.0)、(.so.1.0.0)四个文件。其中,(.so.1.0.0)为实际的动态库文件,(.so)、(.so.1)、(.so.1.0)均为软链接,都是指向(.so.1.0.0)的链接文件,为了版本控制。
只生成一个.so文件的办法:在pro文件加上 CONFIG += plugin
linux 环境变量的设置
查看:
export 查看环境变量
echo $PATH 输出某个环境变量的值
设置:
- export PATH=/home/uusama/mysql/bin:$PATH //当前终端有效,窗口关闭后无效,仅对当前用户有效
- .vim ~/.bashrc 添加 export PATH=/home/uusama/mysql/bin:$PATH//仅对当前用户有效,永久有效
- vim /etc/profile 添加 export PATH=/home/uusama/mysql/bin:$PATH ?//对所有用户有效,永久有效
环境变量生效命令: source ?如source ?/etc/profile ?或者source? ~/.bashrc
具体参考:linux 环境变量的设置_linux设置环境变量命令-CSDN博客
- LD_LIBRARY_PATH和PATH的区别
LD_LIBRARY_PATH:是用于指定动态链接库(shared library)的搜索路径。在执行可执行文件时,操作系统需要加载相应的共享库文件,LD_LIBRARY_PATH变量定义了操作系统在哪里查找这些库文件.
PATH是用于指定可执行文件的搜索路径。当你在终端输入一个命令时,操作系统会搜索PATH中指定的路径,以找到与输入命令对应的可执行文件.
LD_LIBRARY_PATH的具体用法:
如下面test程序调用liblog4qt.so动态库,那么在运行test程序的电脑上,需要设置LD_LIBRARY_PATH,如可以在.vim ~/.bashrc上设置。
PATH的具体用法:
在vim /etc/profile?中添加qt可执行文件的路径
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!