gpt4 book ai didi

c++ - 如何使用 LD_LIBRARY_PATH 和链接使其真正正确?

转载 作者:太空宇宙 更新时间:2023-11-03 10:44:21 26 4
gpt4 key购买 nike

我反复遇到找不到库的问题。

在我的 bashrc 中我有:

LD_LIBRARY_PATH=
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib1
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib2
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib3

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH

这些路径包含我使用 -L/lib1 -l1a -L/lib2 -l2a -L/lib3 -l3a 将库链接到我的程序的所有文件夹。

现在我独立启动我的程序:

./program

很好!

然后我使用 mpich 的 mpiexec 启动它:

/mpich/intel/bin/mpiexec -np 2 ./solvertest1

很好!

然后我在启用 gdb 的情况下启动它:

/mpich/intel/bin/mpiexec -np 2 gdb ./solvertest1

问题,找不到库:

Starting program: /my/program
/my/program: error while loading shared libraries: libirng.so: cannot open shared object file: No such file or directory

我怀疑当 LD_LIBRARY_PATH 应该通过那些脚本和程序产生的所有子进程和 shell 传播时出现问题......我必须做什么才能让每个子进程(以及任何其他将启动的)知道它们在哪里图书馆是?

最佳答案

链接时将库路径存储在可执行文件的DT_RPATH标签中

-Wl,rpath=/lib1 -Wl,rpath=/lib2 -Wl,rpath=/lib3

这样你就不需要搞乱 LD_LIBRARY_PATH 和 shell 初始化。

关于c++ - 如何使用 LD_LIBRARY_PATH 和链接使其真正正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25691408/

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