CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  程序开发区

Linux下C语言编程求教!

楼主nokuta(新手上路)2004-07-04 10:47:58 在 Linux/Unix社区 / 程序开发区 提问

 
  刚刚接触Linux下面的C语言编程,离开了熟悉的Windows   IDE环境,很多地方都不熟悉、不了解,特此向各位大侠求教。  
   
  1、在Linux下,对于一个工程项目,包含多个源程序(.c程序),gcc是如何组织并编译它们的?举例而言,一个项目包含main.c     root.c     exce.c三个源文件,include了main.h   sten.h   两个头文件,Gcc如何编译链接?是不是简单的用gcc   -o   a.out   main.c   root.c   exec.c命令就可以了?不需要向windows   IDE下面那样,用一个project文件来描述各个源程序之间的关系吗?gcc如何确定哪个源文件是主文件,是不是通过寻找哪个文件中包含main()来实现的?  
   
  2、在linux下,用gcc编译程序时,如何进行断点跟踪?是用gcc本身,还是使用其他工具更为方便直观?另外在编写程序时,我感觉使用vi由于没有语法高亮,很不适应,大家有没有好的编辑器推荐?(console下)    
   
  问题点数:20、回复次数:10Top

1 楼houdy(致力于图像/图形领域,成为有思想的程序员)回复于 2004-07-04 11:00:29 得分 5

1.在Unix/Linux,是通过make来对项目的组织的。make文件中包含了文件之间的依赖关系。运行make命令后会产生一个makefile文件,再运行make   install命令安装程序。要了解更多关于make的信息,可以到www.gnu.org下载make命令的manual.  
  2.一个Unix/Linux下的程序的运行入口点就是main()函数,相当于Windows下了winmain()函数。  
  3.GDB是一个很好的Unix/Linux环境下的调试工具。  
  4.我装的Redhat   Linux   9.0下的vi可以高亮显示呀,如果不可以的话,你可以试试vim,是vi的增强版。  
  PS:学习Unix/Linux下的编程,www.gnu.org是很好的去处,很多的说明都可以再这里获得。Top

2 楼nokuta(新手上路)回复于 2004-07-04 11:27:18 得分 0

我知道Makefile,它主要指定源程序文件的依赖关系。但是我对依赖关系的意思没有怎么理解透彻。  
   
  例如,root.c源程序里面定义了一个函数a(),然后main.c源程序中调用了这个函数a(),那么是不是我们就可以说,main.c依赖于root.c?在makefile中我们就应该写为:main.o:main.c   root.c?  
   
  那么如果是互相调用呢?比如root.c定义a(),main.c定义b(),然后root.c中调用b(),main.c中调用a(),那他们之间的依赖关系应该怎么算?  
   
  可能我的概念是模糊和错误的,请各位大侠指点一下,谢谢!Top

3 楼tukey(反美反霸权!)回复于 2004-07-04 14:34:32 得分 0

upTop

4 楼blankman(菜鸟)回复于 2004-07-05 00:28:21 得分 5

To:houdy(苦练内功中)   (   )    
   
  老大,负责一点嘛,不要给人家乱回答啊,误导啊!!!  
  第一条有问题  
   
  makefile文件不是运行make生成的!!!  
  ./configure倒是可以生成makefile文件,但是configure是一个可执行文件  
  根据系统的配置自动生成相应的makefile文件  
  make   默认找当前目录下的   makefile   文件,也可以   make   -f   filename   来指定  
   
  install   是makefile里的一个类似于   Label   的东东,意思是从哪里执行,  
  不是所有makefile文件里面都有的,换句话说那个不是必需的  
   
  有的还有clean等Top

5 楼blankman(菜鸟)回复于 2004-07-05 00:31:06 得分 5

依赖关系是指谁   include   谁,不是谁调用谁,应该是这样理解的  
   
  还有用   gdb   调试需要在编译的时候加上参数,好像是   gcc   -g   .....  
  记不清楚了,你查一下帮助吧  
   
  再补充一点,configure文件相当于打包生成的,不是系统的命令Top

6 楼ImHow(Think in Linux)回复于 2004-07-05 06:31:02 得分 0

楼上,是gcc   -g  
  configure命令是软件目录下的,所以一般都是用./configure来使用Top

7 楼tengulre(debian core developer)回复于 2004-07-05 09:12:21 得分 0

gcc   -g  
  Top

8 楼toxyboy(不专业,我就顶,绝不误导别人!!)回复于 2004-07-05 13:10:29 得分 5

呵呵,我来系统的回答一下吧。  
  gcc   -g   -o   tgt   a.c   b.c   c.c  
  生成tgt目标文件,是以main为入口。.h文件只是声明文件,并不参与编译过程。  
  至于所谓的./configure   都是以标准的GNU风格的编译前配置命令脚本。一般可以使用automake生成,当然也可以直接就写makefile。但是以automake生成的是GNU风格的makefile。  
  make是执行makefile的命令不是文件。  
  要在编程环境下高亮显示可以在进入vi以后执行:syntax   on   命令  
  带了-g   选项生成的tgt文件可以使用gdb来调试   下面是基本用法  
  gdb   tgt  
  break   3   //   set   breakpoint  
  run     //   running  
  display     //   display   variable  
  kill         //   stop   debug  
  quit       //   quit  
   
  more   you   can   man   gdb  
  good   luck   for   uTop

9 楼houdy(致力于图像/图形领域,成为有思想的程序员)回复于 2004-07-06 08:10:27 得分 0

to     blankman(菜鸟):谢谢你的提醒,我一时弄错了:(Top

10 楼therabbit00()回复于 2004-07-06 10:55:59 得分 0

学会写makefile;  
  emacs或者vs都可以啊;  
  自己看看g**怎么用把。Top

相关问题

  • Linux 下C语言编程问题!
  • C语言编程问题
  • C语言编程题
  • Linux RadHat7.2 系统,C语言编程,如何安装libpcap.tar.gz文件?
  • LINUX下 C语言编程中 DIR 是做什么用的~?
  • linux下C语言连接mysql数据库编程,如何捕获错误?
  • 在linux服务器端用C语言进行socket编程一问
  • 介绍几个linux下C语言编程的论坛或者网站
  • linux下的c++编程
  • linux下的c 编程

关键词

  • 文件
  • 函数
  • gcc
  • 执行
  • 项目
  • root
  • gnu
  • 系统
  • linux
  • unix

得分解答快速导航

  • 帖主:nokuta
  • houdy
  • blankman
  • blankman
  • toxyboy

相关链接

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

广告也精彩

反馈

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