路径表示
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 输出某个环境变量的值
设置:
环境变量生效命令: source ?如source ?/etc/profile ?或者source? ~/.bashrc
具体参考:linux 环境变量的设置_linux设置环境变量命令-CSDN博客
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可执行文件的路径