我在Ubuntu14.04上部署用QtCreator生成的.exe时遇到了问题。我安装了几个版本的qwt (我需要它们,一个是用qt4编译的,另一个是用qt5编译的)。问题是,我不知道为什么,无论我做什么,Qt似乎都会将错误版本的qwt链接到我的.exe。当我在.exe上使用LDD时,它总是显示/usr/lib/libqwt.so.6。问题是我在我的.pro中链接我需要的版本,如下所示:
LIBS += -L/usr/local/qwt-6.1.2/lib/ -lqwt
在项目配置中,我使用/usr/local/qwt-6.1.2/lib设置了LD_LIBRARY_PATH
我的.exe仍然没有链接到正确的库。你知道为什么和如何解决这个问题吗?当然,它会在启动时导致分段错误,因为我的程序是用qt5而不是qt4编译的。提前感谢
发布于 2016-05-31 01:15:14
您可以尝试向链接器标志添加运行时路径。在您的.pro文件中,您可以添加以下行(在您的pro文件中打印您的QMAKE_LFLAGS可能也是值得的):
QMAKE_LFLAGS += "-Wl,-rpath,/usr/local/qwt-6.1.2/lib/"
message ("QMAKE_LFLAGS = $$QMAKE_LFLAGS")重新编译,然后再次运行ldd。在运行时也是ldd),你的程序现在应该首先指向这个位置。
注意:这是假设你使用的是gnu编译器!
发布于 2016-06-01 15:42:55
我解决了我的问题,似乎在QtCreator中设置环境变量是不够的。在启动.exe之前,你也必须在终端上做,这是我的错。只需正确设置LD_LIBRARY_PATH即可。
https://stackoverflow.com/questions/37527718
复制相似问题