user2732944
user2732944

Reputation: 85

/usr/bin/ld: cannot find shared library

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

Answers (3)

vineet pant
vineet pant

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

Jonathan Leffler
Jonathan Leffler

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

sr01853
sr01853

Reputation: 6121

Use -lcommon switch when you link libcommon.so

Upvotes: 1

Related Questions