首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用clang++覆盖LD_LIBRARY_PATH中的共享库?

如何使用clang++覆盖LD_LIBRARY_PATH中的共享库?
EN

Stack Overflow用户
提问于 2019-05-31 05:42:45
回答 1查看 319关注 0票数 1

我正在尝试编译一个我用C++编写的共享库,以使用当前目录中另一个共享库的特定版本,但是它似乎忽略了这一点,并在运行时使用我的LD_LIBRARY_PATH中的(旧的和不兼容的) .so文件。我该如何覆盖它用来使用我自己的.so文件呢?我还需要保留较旧的版本,以便在同一系统上进行其他使用。

下面是我用来编译的命令:clang++ /data/openpilot/selfdrive/df/libs/libSNPE.so -lsymphony-cpu -lsymphonypower -I/data/openpilot/phonelibs/snpe/include -std=c++14 -lstdc++ -fPIC -o d_f.so dynamic_follow.cc -shared

/data/openpilot/selfdrive/df/libs/libSNPE.so是我想要使用的库。

我还尝试在我的库文件之前使用-l标志,但是它返回cannot find -l/data/openpilot/selfdrive/df/libs/libSNPE.so

已通过以下命令确认仍使用LD_LIBRARY_PATH中的库:clang++ -Wl,-rpath,/data/openpilot/selfdrive/df/libs -L/data/openpilot/selfdrive/df/libs -lSNPE -lsymphony-cpu -lsymphonypower -I/data/openpilot/phonelibs/snpe/include -std=c++14 -stdlib=libc++ -fPIC -o d_f.so dynamic_follow.cc -shared

EN

回答 1

Stack Overflow用户

发布于 2019-05-31 06:14:49

-L标志告诉在链接时在哪里查找库,而LD_LIBRARY_PATH则告诉在运行时在哪里查找库。因此,无论您在链接时设置什么路径,在运行可执行文件时都会忽略这一点。

您需要让LD_LIBRARY_PATH在运行时包含动态库的目录,以便您的可执行文件能够找到它。

代码语言:javascript
复制
LD_LIBRARY_PATH=/data/openpilot/selfdrive/df/libs:"$LD_LIBRARY_PATH" ./your-exec
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56385984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档