CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  程序开发区

谁能给我讲讲联调的编译过程?

楼主ruddy(淡红色)2003-12-03 23:33:14 在 Linux/Unix社区 / 程序开发区 提问

我有200多个源代码(包括.c和.h文件)作为一个系统共同编译,包括一个main.c文件。  
  也许是我对整个编译连接过程理解得太浅,也没有过大系统联调经验,每个单独的模块都编译运行成功过,放到一起编译的时候就出现了各种各样的问题。  
  开始是头文件之间的互相调用导致重复编译出错;后来我知道应该使用宏来解决这种问题。可对于每个模块都需要调用的<stdio.h>,<stdlib.h>,<string.h>等头文件便都在内部include进去了,没单独定义什么宏。  
  现在的问题是,要么会说我的某个头文件的结构体有语法错误(其实没有,单独运行那个模块没问题);要么(我调整头文件的顺序)列出一大堆"./tmp/cc****……"(内容太长太多忘了),说我很多变量multidefined。  
  所以现在我想知道整个编译连接到运行过程编译器所做的工作,还有,对于这种联调工作应该有什么注意事项?具体操作和整理过程?  
  谢谢指教!  
  另外,我是在linux   7.3下用C编程,gcc编译器。 问题点数:100、回复次数:8Top

1 楼ruancsdn(时间的灰烬)回复于 2003-12-04 09:29:32 得分 10

写个Makefile文件就可以了!Top

2 楼wangkun429111(王一)回复于 2003-12-04 09:33:41 得分 10

makefile文件如何写?Top

3 楼haothinking(好好)回复于 2003-12-04 09:40:41 得分 10

makefile   文件是不好写的。  
  但可以通过好多种方法生成该文件,具体你可以查相关资料。  
  Top

4 楼ruddy(淡红色)回复于 2003-12-04 10:15:58 得分 0

我的头文件内容写的肯定不合理,   如果包含关系不对,makefile也肯定不行.  
  我想知道编译过程,所以还是帮我理解一下编译连接过程和联调的正确格式吧!Top

5 楼CoolQ()回复于 2003-12-04 11:19:31 得分 30

multidefined就是重复定义阿,你需要用  
  #ifndef   XXX  
  #define   XXX  
  function   declaration.....  
  function   declaration.....  
  function   declaration.....  
  #endifTop

6 楼ks9960(snk)回复于 2003-12-04 13:44:13 得分 30

把头文件全放到你的include目录,写一个all_include_.h包含所有你要用的头文件,然后在程序中就#include   $yourHOME/include/all_include_.h,写all_include_.h的时候像CoolQ()那样写。makefile要自己看资料、例子学着写了。Top

7 楼chasehome(chase)回复于 2003-12-05 20:26:03 得分 10

建议用Qt工具qmake   可以做任何平台下的Makefile  
  CoolQ()   说的有理,设置编译条件,防止重复编译Top

8 楼ruddy(淡红色)回复于 2003-12-06 14:16:54 得分 0

现在问题基本解决了,  
  其实我在每个头文件里都加了宏保护来防止重复编译,编译过程是没错的,错在连接过程。  
  原因是头文件里定义了很多变量如int,char   *等等,现在改到.c文件里定义变量,.h文件里用  
  extern声明一下就行了。  
  还有一些头文件和变量排列顺序的关系。  
  所以在调大型程序的时候一定要先画好每个功能模块的关系图,公用变量结构函数,以及相互调用关系。这比后来意识到加宏保护还是makefile等等小技巧都重要。  
  Top

相关问题

  • 请讲讲c#的编译器把
  • tcc编译过程
  • 调用过程提示:编译错误!类型不匹配!
  • Linux内核编译过程?
  • 怎么反编译DLL 文件,看它的实现过程和调用函数
  • 怎样在调用存储过程的时候自动的编译存储过程?
  • 编译程序出错,哪位大虾给讲讲怎么会事呀,多谢~
  • 请教一下tc的编译过程
  • 告诉我 c++ builder 的编译过程
  • 整个程序编译过程

关键词

  • 编译
  • 文件
  • 模块
  • 连接
  • 变量
  • 过程
  • 联调
  • 定义
  • 调用
  • 头

得分解答快速导航

  • 帖主:ruddy
  • ruancsdn
  • wangkun429111
  • haothinking
  • CoolQ
  • ks9960
  • chasehome

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo