gpt4 book ai didi

使用共享库在 Linux 中编译 C 程序

转载 作者:IT王子 更新时间:2023-10-29 01:21:37 26 4
gpt4 key购买 nike

<分区>

我正在尝试使用共享库在 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(创建独立于内存地址的目标文件)

    产生:myclib.o

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

  • gcc -c mymain.c(从 main.c 创建目标文件)

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

  • main.o
  • libmyclib.so

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

gcc -o 程序 -lmyclib -L。我的main.o

(我想 libmyclib 的前缀 lib 应该用 l 代替?)

但是我从 gc-compiler 得到了错误信息:

 *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

我在这两个实现中做错了什么?如何使用共享库将该程序编译为可执行文件?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com