Reputation:
I'm trying to compile a test file:
gcc -o test test.c -lg2c
but I get the error:
/usr/bin/ld: cannot find -lg2c
If I use:
gcc -o test test.c -L/usr/lib/gcc/x86_64-redhat-linux/3.4.6 -lg2c
then it works fine.
So I added the path like so:
LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/3.4.6:$LD_LIBRARY_PATH
and when I use $LD_LIBRARY_PATH
it's listed there, but:
gcc -o test test.c -lg2c
still doesn't work, it gives the same error, I can't figure out why.
I'm using CentOS (2.6.32-279.9.1.el6.x86_64), any help would be greatly appreciated.
EDIT: compiler version:
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
EDIT: I tried using LIBRARY_PATH
instead, now I get a different error:
gcc: spec failure: unrecognized spec option 'M'
I have no idea what it means.
Upvotes: 13
Views: 34940
Reputation: 191
Create a new folder inside your home directory (not root directory!).
Copy all the required library associated with -lg2c
from /usr/lib/gcc/x86_64-redhat-linux/3.4.6
to this folder.
Set the path in your bash profile to this new folder.
I also got this issue, and solve it with this workaround.
Perhaps we (as non-root users) don't have the necessary access/right to /usr/lib/gcc/x86_64-redhat-linux/3.4.6
Upvotes: 0
Reputation: 164
Make sure that you export LD_LIBRARY_PATH
after modifying it. Otherwise GCC won't be able to see the modified version.
LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/3.4.6:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
gcc -o test test.c -lg2c
Upvotes: 2
Reputation: 274838
Try setting LIBRARY_PATH
, instead of LD_LIBRARY_PATH
.
From the gcc
man page:
LIBRARY_PATH
The value of LIBRARY_PATH is a colon-separated list of directories, much like PATH. When configured as a native compiler, GCC tries the directories thus specified when searching for special linker files, if it can't find them using GCC_EXEC_PREFIX. Linking using GCC also uses these directories when searching for ordinary libraries for the -l option (but directories specified with -L come first).
Upvotes: 24