如何 link C 中的两个文件

How to link two files in C

我目前正在做一项 class 作业。作业是在 c 中创建一个链表。但是因为我们这是一个 class 赋值,所以我们有一些限制:

我们有一个无法修改的头文件。 我们有一个 c 文件,它是链表 我们有一个 c 文件,它只是一个测试链表的主要方法

头文件定义了 main 方法,所以当我尝试构建链表时它失败了,因为没有 main 方法。我应该怎么做才能解决这个问题??导入测试文件(这会导致另一个错误)?

我假设您的三个文件名为 header.h、main.c 和 linkedlist.c

gcc main.c linkedlist.c -o executable

这将创建一个名为 "executable"

的可执行二进制文件

请注意,这还假定您使用 gcc 作为编译器。

与大多数语言一样,C 支持模块。我假设你的任务需要编译一个模块。与完整程序不同,模块缺少入口点。粗略地说,它们是函数的集合,以图书馆的方式。编译模块时,不会进行 linking。 你会像这样编译一个模块:gcc -c linkedlist.c -> 这实际上会产生 linkedlist.o,这是一个模块。尝试执行此 linkedlist.o(在将其模式更改为可执行文件之后,因为默认情况下不会如此)。您无法执行此模块的部分原因是它的格式不正确,无法执行。它不是这样的一个原因是它缺少入口点(我们知道的 'main')和 linkage。你的作业似乎提供了一个测试'main.c',如果你想使用它,你只需要link 'main.c'(实际上编译成main.o)和linkedlist.o。要真正做到这一点,只需输入 gcc -o name_of_your_program main.c linkedlist.o。事实上,这里所做的是你的编译器首先将 main.c 编译成一个 main.o 模块,然后 link 将这两个模块放在你用 -o 给它的名称下选项,但编译器非常聪明,不需要明确说明他需要采取的步骤。现在,如果你想了解更多关于这些东西的信息,你必须尝试了解编译器是如何做他们所做的事情的。 Google 可以比我更能帮助你。祝你好运。