gpt4 book ai didi

linux - "symbol lookup error: ...: undefined symbol"(Qwt) 我应该设置 LD_LIBRARY_PATH 吗?

转载 作者:太空宇宙 更新时间:2023-11-04 10:46:12 28 4
gpt4 key购买 nike

安装 qwt-6.1.2.zip 后,我在以下位置看到它:

/usr/local/qwt-6.1.2/lib/libqwt.so

我正在开发的 Qt 应用程序依赖于 in,因此 .pro 具有以下内容:

    INCLUDEPATH += "/usr/local/qwt-6.1.2/include"
LIBS += -L"/usr/local/qwt-6.1.2/lib"
CONFIG(debug, debug|release) {
LIBS += -lqwtd
} else {
LIBS += -lqwt
}

它编译得很好但是执行(在 QtCreator 之外)给出:

"symbol lookup error: ...: undefined symbol"

解决方法是:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/qwt-6.1.2/lib
export LD_LIBRARY_PATH

如果我没看错的话,LD_LIBRARY_PATH should only be set in case the .so files are in exotic (non-standard) locations .问题,/usr/local/qwt-6.1.2/lib 是标准的(我猜不是)?

应该何时何地设置 LD_LIBRARY_PATH?我认为一种选择是在安装时执行此操作,例如:

echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/qwt-6.1.2/lib" >> .bashrc
echo "export LD_LIBRARY_PATH" >> .bashrc

这样做的一个缺点是,多个安装会将这些内容多次写入 .bashrc。

我的问题与 this 有关实际上我最终使用了 -rpath 想法,但我认为这里的上下文可以被视为更具体,与 Qt 相关,所以不是重复的。事实上,我最终使用了 this .

最佳答案

对于您给定的用例,您似乎不应该使用 LD_LIBRARY_PATH。相反,您应该将配置文件添加到 /etc/ld.so.conf.d/ 并运行 ldconfig

例如,以 root 身份运行以下命令:

echo "/usr/local/qwt-6.1.2/lib" > /etc/ld.so.conf.d/qwt.conf
ldconfig

ldconfig 创建动态链接程序解析库所在位置所需的信息。创建的配置文件告诉 ldconfig 在指定目录中搜​​索更多库以包含在其共享库数据库中。这允许程序使用共享库而无需设置 LD_LIBRARY_PATH 环境变量,因为它现在是一个标准库。

关于linux - "symbol lookup error: ...: undefined symbol"(Qwt) 我应该设置 LD_LIBRARY_PATH 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33022334/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com