0
votes

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
$
3
you can check here - Aditya Pawaskar

3 Answers

8
votes

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).

1
votes

Use -lcommon switch when you link libcommon.so

0
votes

try to export LD_LIBRARY_PATH pointing to the directory where you have kept the so files .

export LD_LIBRARY_PATH = /pathofdirectorywheresofilesarekept