我在编译以下代码行时遇到问题:
gcc -o main.c -ldl -lpthread -lRTU_Module main.o
我有以下错误消息:
/usr/bin/ld: cannot find -lRTU_Module
collect2: error: ld returned 1 exit status
当我尝试查找我的 .so 的位置时,它返回以下内容:
locate libRTU_Module.so
/home/owasys/workspace/AccelTest/libRTU_Module.so
/home/owasys/workspace/Compiler_gcc-linaro-5.3_patch/files/lib/libRTU_Module.so
/home/owasys/workspace/Compiler_gcc-linaro-5.3_patch/files/lib/libRTU_Module.so.1.0.11
/opt/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib/libRTU_Module.so
/opt/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib/libRTU_Module.so.0
/opt/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib/libRTU_Module.so.0.0.0
/opt/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib/libRTU_Module.so.1.0.11
我对类似问题的答案有红色倍数,但我还没有解决我的问题。
谢谢。
ld
通常会扫描一组默认/配置的目录,通常不知道自定义内容,例如/home/a/b/c
应该很容易修复;这有效吗?
dir=/home/owasys/workspace/Compiler_gcc-linaro-5.3_patch/files/lib
gcc -o main.c -ldl -lpthread -lRTU_Module.so main.o -L $dir
可能需要告诉运行时链接编辑器在那里搜索,例如将其添加到 gcc cmd 行:
-Wl,-rpath=$dir