如何在C中链接两个文件

时间:2015-04-05 23:22:05

标签: c include main

我目前正在进行课堂作业。分配是在c中创建链接列表。但是因为我们这是一个类赋值,所以我们有一些约束:

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

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

2 个答案:

答案 0 :(得分:3)

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

gcc main.c linkedlist.c -o executable

这将创建一个名为“executable”的可执行二进制文件

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

答案 1 :(得分:0)

与大多数语言一样,C支持模块。我认为您的任务需要的是编译模块。与完整程序不同,模块缺少入口点。粗略地说,它们是以图书馆的方式集合的功能。编译模块时,不进行链接。 您可以编译这样的模块:gcc -c linkedlist.c - >这实际上会产生linkedlist.o,这是一个模块。尝试执行此linkedlist.o(将其模式更改为可执行文件后,因为默认情况下不会这样)。您执行此模块失败的原因部分是因为它的格式不正确。它不是这样的原因是缺乏切入点(我们所知道的“主要”)和联系。你的作业似乎提供了一个测试'main.c',如果你想使用它,你只需要将'main.c'(实际编译成main.o)与linkedlist.o链接起来。要实际执行此操作,只需键入gcc -o name_of_your_program main.c linkedlist.o即可。实际上,这里要做的是你的编译器首先将main.c编译成一个main.o模块,然后用你给它的名字用2个模块连接-o选项,但编译器非常聪明,他不需要明确他需要采取的步骤。现在,如果您想了解更多关于这些内容的信息,您必须尝试了解编译器如何完成它们的工作。 Google可以为您提供比以往更多的帮助。祝你好运。