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.