菜鸟紧急求助:gcc下的多源文件makefile
以前一直用vc写程序所以从来没注意过,最近因为需要用gcc写了一个c的程序,结果遇到makefile的问题让我一个头两个大
简单来说就是程序包含了若干个源文件
f1.c f2.c f3.c
以及一个头文件f.h
头文件包括了所有的函数声明,结构体声明。
结果在编译的时候遇到如下问题:
1. undefined reference
无法调用其它源文件中的函数
下面是我的makefile
2.自定义结构体被识别为语法错误
head file中的定义
所有在头文件使用了自定义struct的地方都会报错
然后将其缩减为诸如
[code=C]\C++
typedef struct user_data DATA,*pDATA;
typedef ...
struct user_data
{
...
};
[/code]
也不行。。
真的是完全搞不清楚问题所在,以前用vc的时候从来没遇到类似问题。。。
在此真是感谢各位大大了
简单来说就是程序包含了若干个源文件
f1.c f2.c f3.c
以及一个头文件f.h
头文件包括了所有的函数声明,结构体声明。
结果在编译的时候遇到如下问题:
1. undefined reference
无法调用其它源文件中的函数
下面是我的makefile
test.exe : f1.o f2.o f3.o
gcc -o f1.o f2.o f3.o
f1.o : f1.c f.h
gcc -c f1.c f.h
f2.o : f2.c f.h
gcc -c f2.c f.h
f3.o : f3.c f.h
gcc -c f3.c f.h
2.自定义结构体被识别为语法错误
head file中的定义
typedef struct user_data
{
char Name[NAME_LEN];
char ID[ID_LEN];
char Password[PW_LEN];
}DATA,*pDATA;
typedef struct data_list
{
pDATA User_Data;
data_list * Prev;
data_list * Next;
}DATA_LIST,*pDATA_LIST;
/* ... */
pDATA GetUserData(pDATA_LIST);
所有在头文件使用了自定义struct的地方都会报错
然后将其缩减为诸如
[code=C]\C++
typedef struct user_data DATA,*pDATA;
typedef ...
struct user_data
{
...
};
[/code]
也不行。。
真的是完全搞不清楚问题所在,以前用vc的时候从来没遇到类似问题。。。
在此真是感谢各位大大了
...全文
相关推荐
如何构建多目录的Makefile样例
GCC(GNU Compiler Collection)是常用的C/C++编译器,它支持Makefile来组织和执行编译过程。
gcc make makefile cmake cmakelist 区别
对于小型项目,单一源文件可以直接使用gcc命令进行编译。但是,在涉及到多个源文件的情况下,逐一手动编译就会变得非常繁琐且容易出错。此时,make工具的出现就显得尤为重要。
Linux下用GCC运行C语言源文件的实例
Makefile是一个包含了规则和目标的文本文件,可以方便地管理多个源文件和编译步骤。通过`make`命令,我们可以快速构建整个项目。
linux下gcc,g++的用法和区别,以及makefile的编写
在大型项目中,使用 Makefile 可以简化编译和链接的过程,并且能有效地管理项目的依赖关系。- **文件依赖关系**:定义了目标文件与源文件之间的依赖关系。
linux下构建多目录下Makefile产生so动态库样例
通常,我们使用`gcc`或`g++`作为编译器,并通过`-c`选项编译源文件为对象文件,然后使用`-o`指定输出文件。在多目录结构中,每个目录可能有自己的Makefile,负责编译该目录下的源文件。


