在Mac OS链接器上使用gcc编译代码时,链接自定义静态库失败

亚什·戈文丹尼

这是我用c语言
编写的项目文件的文件结构:首先是一个fullCourse文件夹
fullCourse文件夹包含三个文件夹:
1.包含
2. src
3. lib
4.
在包含文件夹中进行测试
它包含一个头文件:temp.h

temp.h的代码如下:

#ifndef __$__temp_h
#define __$__temp_h 234
int yash();
#endif

在src文件夹中:
它包含一个源文件:

temp.cc的temp.c代码如下:

#ifndef __$__temp_c
#define __$__temp_c 234
int yash()
{
return 22;
}
#endif

然后留在同一文件夹中,创建.o文件,如下所示:

gcc -I ../include -c temp.c

下一步是将该temp.o文件移动到lib文件夹,如下所示:

mv temp.o ../lib

比留在lib文件夹中创建一个存档(或库)文件,如下所示:

ar rcs libtmds.a temp.o

比在测试文件夹中写了一个源代码来测试tempTest.c的库(tempTest.c)的
代码如下:

#include<stdio.h>
#include<temp.h>
int main()
{
int w;
w=yash();
printf("%d\n",w);
return 0;
}

比留在test文件夹中尝试按如下方式进行编译:

gcc -static -I ../include tempTest.c -L ../lib -ltmds -o tempTest.exe

但代码未编译,显示以下错误:

ld: library not found for -lcrt0.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)

请帮助我解决此问题。

理查德·巴伯

-static这里是错误的。要链接到静态库,只需不带任何-static标志的纯链接即可,这是用于内核编译的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章