gpt4 book ai didi

c - 在c中链接2个目标文件以创建可执行文件

转载 作者:太空宇宙 更新时间:2023-11-04 07:58:15 26 4
gpt4 key购买 nike

我正在制作的东西的联编文件有问题。我的 makefile 看起来像这样

bag: main.o bow.o
gcc bow.o main.o -o bag
main.o: main.c bow.h
gcc -Wall -ansi -pedantic main.c -o main.o
bow.o: bow.c bow.h
gcc -Wall -ansi -pedantic -c bow.c -o -bow.o

我还有一个名为“bow.h”的头文件,用于 bow.o 和 main.o。 bow.h 包含 8 个函数定义和 2 个结构,bow.c 包含 8 个函数和 NO MAIN 文件。 main.c 应该是一个最小的主文件,所以它只包含

#include "bow.h"

当我在终端中运行我的 makefile 时

make

我收到这条消息

/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
makefile:2: recipe for target 'bag' failed
make: *** [bag] Error 1

这到底是什么意思,它是怎么引起的,我该如何解决?

最佳答案

即使是最小的程序(可执行文件)也需要一个起点。对于 C 程序,这是 main() 函数。因此,链接器寻找该函数(更准确地说,它链接启动对象,其中 main 是一个未解析的符号),找不到它,并发出错误。

因此,您必须提供一个main()。或者,您可能不会生成可执行文件,而是生成库。

关于c - 在c中链接2个目标文件以创建可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48516331/

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