Reputation: 85
I am having libcommon.so in the /usr/local/lib and I am linking this library in my program.
gcc -o test test_prog.c -L/usr/local/lib -llibcommon.so
and I have tried this too
gcc -o test test_prog.c -L/usr/local/lib -llibcommon
It's giving
/usr/bin/ld: cannot find -llibcommon.so
collect2: ld returned 1 exit status
It is there:
$ locate libcommon.so
/usr/local/lib/libcommon.so
/usr/local/lib/libcommon.so.0
/usr/local/lib/libcommon.so.0.1.0
$
Upvotes: 0
Views: 32869
Reputation: 87
try to export LD_LIBRARY_PATH pointing to the directory where you have kept the so files .
export LD_LIBRARY_PATH = /pathofdirectorywheresofilesarekept
Upvotes: 1
Reputation: 753455
When you use the -l
, you specify just the 'basic' library name:
-lcommon
This will track down libcommon.so
in some directory.
You told the compiler to try and find liblibcommon.so.so
(and liblibcommon.so
) and it probably couldn't...indeed, you wouldn't be asking the question if it could.
Some GNU programs build a library libiberty.so
(or its equivalent), so the link lines using the library link with:
-liberty
(which is funny; GNU would really rather it was +liberty
, but ... you can't fix everything).
Upvotes: 8