当前位置: 技术问答>linux和unix
谁能给我讲讲联调的编译过程?
来源: 互联网 发布时间:2015-05-20
本文导语: 我有200多个源代码(包括.c和.h文件)作为一个系统共同编译,包括一个main.c文件。 也许是我对整个编译连接过程理解得太浅,也没有过大系统联调经验,每个单独的模块都编译运行成功过,放到一起编译的时候就出...
我有200多个源代码(包括.c和.h文件)作为一个系统共同编译,包括一个main.c文件。
也许是我对整个编译连接过程理解得太浅,也没有过大系统联调经验,每个单独的模块都编译运行成功过,放到一起编译的时候就出现了各种各样的问题。
开始是头文件之间的互相调用导致重复编译出错;后来我知道应该使用宏来解决这种问题。可对于每个模块都需要调用的,,等头文件便都在内部include进去了,没单独定义什么宏。
现在的问题是,要么会说我的某个头文件的结构体有语法错误(其实没有,单独运行那个模块没问题);要么(我调整头文件的顺序)列出一大堆"./tmp/cc****……"(内容太长太多忘了),说我很多变量multidefined。
所以现在我想知道整个编译连接到运行过程编译器所做的工作,还有,对于这种联调工作应该有什么注意事项?具体操作和整理过程?
谢谢指教!
另外,我是在linux 7.3下用C编程,gcc编译器。
也许是我对整个编译连接过程理解得太浅,也没有过大系统联调经验,每个单独的模块都编译运行成功过,放到一起编译的时候就出现了各种各样的问题。
开始是头文件之间的互相调用导致重复编译出错;后来我知道应该使用宏来解决这种问题。可对于每个模块都需要调用的,,等头文件便都在内部include进去了,没单独定义什么宏。
现在的问题是,要么会说我的某个头文件的结构体有语法错误(其实没有,单独运行那个模块没问题);要么(我调整头文件的顺序)列出一大堆"./tmp/cc****……"(内容太长太多忘了),说我很多变量multidefined。
所以现在我想知道整个编译连接到运行过程编译器所做的工作,还有,对于这种联调工作应该有什么注意事项?具体操作和整理过程?
谢谢指教!
另外,我是在linux 7.3下用C编程,gcc编译器。
|
multidefined就是重复定义阿,你需要用
#ifndef XXX
#define XXX
function declaration.....
function declaration.....
function declaration.....
#endif
#ifndef XXX
#define XXX
function declaration.....
function declaration.....
function declaration.....
#endif
|
把头文件全放到你的include目录,写一个all_include_.h包含所有你要用的头文件,然后在程序中就#include $yourHOME/include/all_include_.h,写all_include_.h的时候像CoolQ()那样写。makefile要自己看资料、例子学着写了。
|
写个Makefile文件就可以了!
|
makefile文件如何写?
|
makefile 文件是不好写的。
但可以通过好多种方法生成该文件,具体你可以查相关资料。
但可以通过好多种方法生成该文件,具体你可以查相关资料。
|
建议用Qt工具qmake 可以做任何平台下的Makefile
CoolQ() 说的有理,设置编译条件,防止重复编译
CoolQ() 说的有理,设置编译条件,防止重复编译