使用共享库在Linux中编译C程序[复制]
发布时间:2020-12-14 01:02:12 所属栏目:Linux 来源:网络整理
导读:参见英文答案 linker tells me it can’t resolve symbols,but they’re there?????????????????????????????????????3个 我试图在Linux中使用共享库编译一个简单的C程序. 我在同一个文件夹中共同拥有以下文件: mymain.c #include "myclib.h" int main() {
参见英文答案 >
linker tells me it can’t resolve symbols,but they’re there?????????????????????????????????????3个
我试图在Linux中使用共享库编译一个简单的C程序. 我在同一个文件夹中共同拥有以下文件: mymain.c #include "myclib.h" int main() { func(); return 0; } myclib.h void func(); myclib.c #include <stdio.h> void func() { printf("hello world!!!!!!!!!!!!n"); } 然后我按照以下步骤操作: > gcc -c fPIC myclib.c(创建memoryaddress independent objectfile) 产生:myclib.o 到目前为止一切顺利 – 然后我准备好以下文件: > main.o 所以我尝试用这种语法创建一个程序: gcc -o program -lmyclib -L. mymain.o (我猜libmyclib的前缀lib应该替换为l?) 但我从gc编译器收到错误消息: *mymain.o: In function `main': mymain.c:(.text+0xa): undefined reference to `func' collect2: error: ld returned 1 exit status* 我也测试了这个语法: gcc -o program mymain.c -L -lmyclib -Wl,-rpath,. 然后我收到以下错误: /usr/bin/ld: cannot find -lmyclib.so collect2: error: ld returned 1 exit status 我在这两个实现中做错了什么? 解决方法
您需要在链接器调用命令行的末尾放置-l选项:
gcc -o program -L. mymain.o -lmyclib (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |