REPAST HPC WSL安装导致boost找不到

REPAST HPC WSL Installation leads to boost no being found

尝试 运行 Repast HPC 可执行文件时出现以下错误:

./main.exe: error while loading shared libraries: libboost_mpi-mt.so.1.61.0: cannot open shared object file: No such file or directory ./main.exe: error while loading shared libraries: libboost_mpi-mt.so.1.61.0: cannot open shared object

在 make 文件中,我定义 link 以在 env 文件中使用以下内容进行提升:

BOOST_INCLUDE= -I$(HOME)/sfw/Boost/Boost_1.61/include/
BOOST_LIB_DIR= -L$(HOME)/sfw/Boost/Boost_1.61/lib/

这是link编辑到具有以下生成文件的生成文件

include ./env

.PHONY: clean
clean:
    rm -f *.o
    rm -f *.exe

.PHONY: compile
compile:
    $(MPICXX) $(BOOST_INCLUDE) -c Main.cpp -o Main.o
    $(MPICXX) $(BOOST_LIB_DIR) -o main.exe Main.o $(BOOST_LIBS)

.PHONY: all
all: clean compile

提升 tsnow@DESKTOP-IF7CEHL:~/sfw/Boost/Boost_1.61/lib$,因此它应该 link 很好。

感谢任何帮助,只是想获得教程 运行ning。

我们通常不会 link repast to boost,而是使用 rpath 让模型可执行文件知道 boost 和 repast 库的位置。例如在您的 Makefile 中:

REPAST_LIB_DIR = $(REPAST_HOME)/lib
BOOST_LIB_DIR = $(HOME)/theta/sfw/boost-1.66.0/lib
RPATHS += -Wl,-rpath -Wl,$(REPAST_LIB_DIR) -Wl,-rpath -Wl,$(BOOST_LIB_DIR)

然后在 linking 期间在库列表后添加 $(RPATHS)。

model : $(EXEC_OBJECTS)
    $(CXXLD) -fopenmp -dynamic $^ $(LIBS) $(RPATHS) -o $(NAME)

其中一些参数可能不适合 WSL,但希望 RPATHS 部分有意义。

因此,如果在包含指令之后添加

RPATHS=-Wl,-rpath -Wl,$(BOOST_LIB_DIR)

并用

更新编译目标的第二行
$(MPICXX) $(BOOST_LIB_DIR) -o main.exe Main.o $(BOOST_LIBS) $(RPATHS)

你的 boost 库的位置被编译到 main.exe,它应该能找到它。

命令:

export LD_LIBRARY_PATH=/home/tsnow/sfw/Boost/Boost_1.61/lib/

允许找到提升。