C++ 正在使用gcc链接库-ld:找不到-larpack

C++ 正在使用gcc链接库-ld:找不到-larpack,c++,gcc,installation,arpack,C++,Gcc,Installation,Arpack,我正在没有root权限的服务器上安装软件。我在安装过程中遇到以下错误: make[1]: *** [hgaprec] Error 1 make[1]: Leaving directory `/seq/.../SOFTWARE/hgaprec/src' make: *** [all-recursive] Error 1 Making install in src make[1]: Entering directory `/seq/.../SOFTWARE/hgaprec/src' g++ -O3

我正在没有root权限的服务器上安装软件。我在安装过程中遇到以下错误:

make[1]: *** [hgaprec] Error 1
make[1]: Leaving directory `/seq/.../SOFTWARE/hgaprec/src'
make: *** [all-recursive] Error 1
Making install in src
make[1]: Entering directory `/seq/.../SOFTWARE/hgaprec/src'
g++  -O3   -o hgaprec ratings.o main.o log.o hgaprec.o -larpack -llapack -
lblas -lgsl -lpthread -lgslcblas 
/.../software/free/Linux/redhat_6_x86_64/pkgs/gcc_5.2.0/bin/ld: cannot 
find -larpack
collect2: error: ld returned 1 exit status
make[1]: *** [hgaprec] Error 1
make[1]: Leaving directory `/seq/.../SOFTWARE/hgaprec/src'
make: *** [install-recursive] Error 1
由于找不到库arpack,我随后将其安装在这里/seq/../SOFTWARE/hgaprec/arpack,发现该进程生成了一个静态文件libarpack_LINUX.a。要将此静态库链接到gcc,请使用以下命令:

gcc -larpack -L/seq/.../SOFTWARE/hgaprec/ARPACK/libarpack_LINUX.a
然而,在安装没有找到larpack的软件时,我不断收到相同的错误。我使用的链接命令是否错误

您需要gcc main.c/seq/./SOFTWARE/hgaprec/ARPACK/libarpack\u LINUX.a如果指定静态库的完整路径,则不需要-l和-l,或者按照@Julian\u Cienfuegos建议的gcc main.c-l/seq/./SOFTWARE/hgaprec/ARPACK/-larpack\u LINUX。这假设您只编译一个名为main.c的文件,其中包含main函数,并输出a.out二进制文件


编辑:添加了main.c.的解释。

我的问题在将ARPACK库路径作为LD标志的一部分包含在“像这样配置”中后得到了解决:


./configure-prefix=/seq/../SOFTWARE/hgaprec LDFLAGS=-L/seq/../SOFTWARE/hgaprec/ARPACK/

一个很好的技巧是运行gcc-m64-W,详细。。。这应该告诉链接器显示它的确切位置不要将库的名称放在-L之后,只放在它所在的目录中。我不知道这是否重要,但你应该把目录放进去。例如,如果我是针对libA.a进行链接,我会键入:gcc main.c-L/path/to/lib-lASo您应该尝试gcc main.c-L/path/to/lib-larpack\u linux为什么您有。。在/seq之后,您是否在缩写一条漫长的道路?如果是文字,/seq/./SOFTWARE/hgaprec/ARPACK/相当于/SOFTWARE/hgaprec/ARPACK。由于路径太长,请继续使用缩写?这是一个必要的论点吗?我在arpack或hgaprec中没有看到main.c