c中未定义的引用

c中未定义的引用,c,makefile,C,Makefile,虽然这听起来是一个noobs问题,但我正面临一个奇怪的情况。 我正在尝试建立的项目有一个组织良好的文件。每个应用程序模块与其源(*.C)保存在一个单独的文件夹中,并包含子文件夹中的文件。每个文件夹都有一个make文件,驱动器中有一个master make文件。 我在其中一个模块中添加了一个C源文件。如果我从保存在不同文件夹中的c文件调用函数,它会给出一个错误“undefined reference to”,尽管有许多函数是从保存在不同模块的c文件中的不同c文件调用的 我想make文件需要修改。但

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


我想make文件需要修改。但我是一个喜欢使用make的人。我无法确定要修改的内容和位置。

生成文件将根据某些规则编译您的文件(由
标识)

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


您可以在编写规则时使用这些工具。

很抱歉,鉴于当前的信息量,我们无法帮助您。不清楚。注意<代码> *.c>代码>文件(带有一个Capital C)通常是C++文件,而不是C文件。但是我建议使用C++代码> C.<代码> >或>代码> CPP < /代码>,以及C源文件的<代码> C >代码>我应该给你更多的信息。所有文件都是c语言源文件。这些文件正在为另一个linux环境(ARM9)进行(交叉)编译。不,这不是必需的。目录结构、makfile、您的添加、错误消息……请阅读并了解我们对问题的期望。您是否编写了导出c文件例程的标题?c文件中是否包含使用另一个c文件函数的头文件?这里的问题是,我调用的主生成文件在每个子文件夹中生成文件。然后每个make文件执行编译。我已经在C源文件中正确地包含了头文件。推荐仍然是个问题。在make中也没有任何路径列表。主make具有'TQCALLFBBS=Utils\Xml\XmlParse`@D.7每个子文件夹中的make文件应包含通用的
.c.o:
规则或编译源文件的其他规则。如果规则是
.c.o:
,则不需要修改,如果不需要,则将新规则放在那里。就你提供的信息而言,我帮不了你更多。