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/
允许找到提升。
尝试 运行 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/
允许找到提升。