我正在尝试编译测试文件:
gcc -o test test.c -lg2c
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
/usr/bin/ld: cannot find -lg2c
Run Code Online (Sandbox Code Playgroud)
如果我使用:
gcc -o test test.c -L/usr/lib/gcc/x86_64-redhat-linux/3.4.6 -lg2c
Run Code Online (Sandbox Code Playgroud)
然后它工作正常.
所以我添加了这样的路径:
LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/3.4.6:$LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)
当我在那里使用$LD_LIBRARY_PATH它时,但是:
gcc -o test test.c -lg2c
Run Code Online (Sandbox Code Playgroud)
仍然不起作用,它给出了同样的错误,我无法弄清楚为什么.
我正在使用CentOS(2.6.32-279.9.1.el6.x86_64),任何帮助将不胜感激.
编辑:编译器版本:
rpm -qa | grep gcc
gcc-4.4.6-4.el6.x86_64
compat-gcc-34-g77-3.4.6-19.el6.x86_64
libgcc-4.4.6-4.el6.x86_64
compat-gcc-34-3.4.6-19.el6.x86_64
gcc-gfortran-4.4.6-4.el6.x86_64
libgcc-4.4.6-4.el6.i686
gcc-c++-4.4.6-4.el6.x86_64
Run Code Online (Sandbox Code Playgroud)
编辑:我尝试使用LIBRARY_PATH,现在我得到一个不同的错误:
gcc: spec failure: unrecognized spec option 'M'
Run Code Online (Sandbox Code Playgroud)
我不知道这意味着什么.
dog*_*ane 15
尝试设置LIBRARY_PATH,而不是LD_LIBRARY_PATH.
从gcc手册页:
LIBRARY_PATH
LIBRARY_PATH的值是以冒号分隔的目录列表,与PATH非常相似.当配置为本机编译器时,GCC会在搜索特殊链接器文件时尝试这样指定的目录,如果它无法使用GCC_EXEC_PREFIX找到它们.在使用-l选项搜索普通库时,使用GCC链接也会使用这些目录(但首先使用-L指定的目录).