简体   繁体   中英

/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
$

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

链接libcommon.so时使用-lcommon开关

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

export LD_LIBRARY_PATH = /pathofdirectorywheresofilesarekept

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM