linux 编译复制,使用共享库在Linux中编译C程序[复制]

参见英文答案 >

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

void func() {

printf("hello world!!!!!!!!!!!!\n");

}

然后我按照以下步骤操作:

> gcc -c fPIC myclib.c(创建memoryaddress independent objectfile)

产生:myclib.o

> gcc -shared -fPIC -o libmyclib.so myclib.o(创建共享库)

> gcc -c mymain.c(从main.c创建一个目标文件)

到目前为止一切顺利 – 然后我准备好以下文件:

> main.o

> libmyclib.so

所以我尝试用这种语法创建一个程序:

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

我在这两个实现中做错了什么?

如何使用共享库将此程序编译为可执行文件?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值