1
/usr/bin/ld: cannot find -lgsl
/usr/bin/ld: cannot find -lgslcblas
collect2: ld returned 1 exit status
make[2]: *** [examples/slim_learn] Error 1
make[1]: *** [examples/CMakeFiles/slim_learn.dir/all] Error 2
make: *** [all] Error 2

我在使用 make 命令时遇到链接器错误,我认为这是因为即使在我设置了 LIBRARY_PATH env 变量的路径后,链接器也无法找到特定的 GSL 文件,如果无法找到,显然 C 链接器会参考找到一个文件。我很困惑如何解决这个错误。我还在一个不相关的(很可能)注释上将 C_INCLUDE_PATH 设置为我的 gsl 目录。解决此错误的任何帮助将不胜感激,因为我对 linux 非常陌生并且不知道如何继续。

设置 LIBRARY_PATH :

export LIBRARY_PATH=$LIBRARY_PATH:/home/PATH_TO_gls/gsl-1.16/

make 文件真的很长,因此我很犹豫将其发布在这里,但这是 makefile 的相关部分:(如果您仍然希望我发布整个内容,请告诉我)

src/CMakeFiles/SLIM.dir/slim_fs_learn.c.o.requires:
.PHONY : src/CMakeFiles/SLIM.dir/slim_fs_learn.c.o.requires

src/CMakeFiles/SLIM.dir/slim_fs_learn.c.o.provides: src/CMakeFiles/SLIM.dir/slim_fs_learn.c.o.requires
        $(MAKE) -f src/CMakeFiles/SLIM.dir/build.make src/CMakeFiles/SLIM.dir/slim_fs_learn.c.o.provides.build
.PHONY : src/CMakeFiles/SLIM.dir/slim_fs_learn.c.o.provides

src/CMakeFiles/SLIM.dir/slim_fs_learn.c.o.provides.build: src/CMakeFiles/SLIM.dir/slim_fs_learn.c.o

src/CMakeFiles/SLIM.dir/slim_learn.c.o: src/CMakeFiles/SLIM.dir/flags.make
src/CMakeFiles/SLIM.dir/slim_learn.c.o: ../src/slim_learn.c
        $(CMAKE_COMMAND) -E cmake_progress_report "/home/nmuralid/Desktop/Nikhil Documents/Yelp_Research/SLIM Recommender/slim-1.0/b$
        @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/SLIM.dir/slim_learn.c.o"
        cd "/home/nmuralid/Desktop/Nikhil Documents/Yelp_Research/SLIM Recommender/slim-1.0/build/src" && /usr/bin/gcc  $(C_DEFINES)$

提前致谢!

4

1 回答 1

1

解决方案是将 LIBRARY_PATH 环境变量设置为 libgsl.so 和 libgslblas.so 文件的路径。这是通过以下方式实现的:

导出 LIBRARY_PATH=$LIBRARY_PATH:/home/path_to_gsl/gsl-1.16/cblas/./.libs/

导出 LIBRARY_PATH=$LIBRARY_PATH:export LIBRARY_PATH=$LIBRARY_PATH:/home/nmuralid/path_to_gsl/gsl-1.16/.libs/

在这种情况下,我们设置了 LIBRARY_PATH 环境,因为 C-Linker 会在这些目录中查找,以防在链接期间找不到文件。

使用 gls 版本 1.16。

于 2013-11-12T19:34:32.343 回答