ld即使指定了-L也找不到共享库

问题描述 投票:0回答:1

我正在尝试根据特定位置(/home/user/cuda_sync_analyzer-install/lib/libInsertTimingInstr.so)上的共享库编译C文件,但是ld似乎找不到它-

$ gcc -g -I/home/user/tools/cuda_sync_analyzer/src/InsertTimingInstr \
         -L/home/user/cuda_sync_analyzer-install/lib/ \
         callback.c -o callback -lInsertTimingInstr.so
/usr/bin/ld: cannot find -lInsertTimingInstr.so
collect2: error: ld returned 1 exit status

我也尝试过

$ gcc -g -I/home/user/tools/cuda_sync_analyzer/src/InsertTimingInstr \
         -L/home/user/cuda_sync_analyzer-install/lib/ \
         -lInsertTimingInstr.so callback.c -o callback
/usr/bin/ld: cannot find -lInsertTimingInstr.so
collect2: error: ld returned 1 exit status

以及设置LD_LIBRARY_PATH

$ export LD_LIBRARY_PATH=/home/user/cuda_sync_analyzer-install/lib/
$ gcc -g -I/home/user/tools/cuda_sync_analyzer/src/InsertTimingInstr \
         callback.c -o callback -lInsertTimingInstr.so
/usr/bin/ld: cannot find -lInsertTimingInstr.so
collect2: error: ld returned 1 exit status

文件libInsertTimingInstr.so存在于目录中-

$ ls -l /home/user/cuda_sync_analyzer-install/lib/ | grep Timing
-rw-r--r-- 1 user user   51992 Mar 18 18:04 libInsertTimingInstr.so
gcc shared-libraries ld
1个回答
0
投票

但是ld似乎找不到它

此命令行:gcc ... -lInsertTimingInstr.so ...要求链接器链接到libInsertTimingInstr.so.a libInsertTimingInstr.so.so,都不存在。

您想要:gcc ... -lInsertTimingInstr ...(即,删除lib前缀 .so后缀)。

或者,您可以这样做:gcc ... /home/user/cuda_sync_analyzer-install/lib/libInsertTimingInstr.so ...

© www.soinside.com 2019 - 2024. All rights reserved.