WSL环境安装REPAST HPC后运行程序提示找不到Boost共享库如何解决
问题排查及解决方案
你遇到的是动态库运行时查找失败问题,Makefile中添加的-L参数仅作用于编译链接阶段的库查找,不会被写入可执行文件,运行程序时系统动态链接器无法感知自定义的库路径,可根据需求选择以下方案解决:
方案1:临时运行测试(最适合跑单次教程)
执行命令时手动指定库查找路径:
LD_LIBRARY_PATH=$HOME/sfw/Boost/Boost_1.61/lib:$LD_LIBRARY_PATH ./main.exe
方案2:当前用户永久生效
编辑当前用户的shell配置文件(bash对应~/.bashrc,zsh对应~/.zshrc),在末尾添加:
export LD_LIBRARY_PATH=$HOME/sfw/Boost/Boost_1.61/lib:$LD_LIBRARY_PATH
保存后执行source ~/.bashrc(或对应zsh的配置文件)即可生效,后续运行程序无需再加前缀。
方案3:将路径写入可执行文件(一劳永逸,无需改环境变量)
修改Makefile的链接命令,添加rpath参数将库路径硬编码到可执行文件中:
compile: $(MPICXX) $(BOOST_INCLUDE) -c Main.cpp -o Main.o $(MPICXX) $(BOOST_LIB_DIR) -Wl,-rpath=$(HOME)/sfw/Boost/Boost_1.61/lib -o main.exe Main.o $(BOOST_LIBS)
重新执行make all编译后,直接运行./main.exe即可。
方案4:系统全局生效(需要root权限)
在/etc/ld.so.conf.d/目录下新建配置文件boost-1.61.conf,写入:
/home/tsnow/sfw/Boost/Boost_1.61/lib
保存后执行sudo ldconfig刷新系统动态库缓存即可。
内容的提问来源于stack exchange,提问作者Tom Snow
相关产品推荐
相关产品推荐

