gpt4 book ai didi

c - c 中 undefined reference

转载 作者:行者123 更新时间:2023-11-30 19:16:26 26 4
gpt4 key购买 nike

虽然这听起来是一个菜鸟问题,但我面临着一个奇怪的情况。我正在尝试构建的项目有一个组织良好的文件。每个应用程序模块及其源代码 (*.C) 和子文件夹中的包含文件都保存在单独的文件夹中。每个文件夹都有一个 make 文件,并且驱动器中有一个主 make 文件。我在其中一个模块中添加了一个 C 源文件。如果我从保存在不同文件夹中的 c 文件调用函数,它会给出错误“ undefined reference ”,尽管有许多函数是从保存在不同模块的 C 文件中的不同 C 文件调用的。

我猜 make 文件需要修改。但我是一个使用 make 的初学者。我无法弄清楚要修改什么以及在哪里。

最佳答案

Makefile 将根据一些规则(由 : 标识)编译您的文件。

如果您的 Makefile 的编写方式编译每个 .c 文件(我推荐),您可能必须自己为新文件编写规则.

规则是这样构建的:

rulename: dependencies
command1
command2
command3...
...

rulename 是规则的名称。这通常是您想要从 .c 文件中获取的 .o 文件的名称。依赖项是此规则“依赖”的文件(意味着如果任何文件发生更改,则该规则已过时,必须再次“制定”)。
command[n]制定此规则时使用的 shell 命令。这些命令每个命令都在不同的 shell 中运行(这意味着您不能执行 cd .... 然后 gcc -c .... 在另一行中,您必须在同一行中执行它们:cd .... && gcc -c ....)。

具体的例子应该是:

my_file.o: my_file.c my_file.h main_header.h other_things.h
gcc -o my_file.o -c my_file.c

将其放在 Makefile 中与 .c 文件同一级别
如果您的源文件位于子文件夹中,并且该级别没有 Makefile,请放入最近的一个,并在调用 gcc 时添加路径。

rule-writing shortcuts and variables您可以在编写规则时使用。

关于c - c 中 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30318976/

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