Chinaunix首页 | 论坛 | 博客
  • 博客访问: 47005
  • 博文数量: 10
  • 博客积分: 346
  • 博客等级: 入伍新兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-08 12:37
文章分类
文章存档

2014年(1)

2010年(9)

分类:

2010-08-09 14:48:27


这里向大家介绍一下在Linux/UNIX 的机器上,进行 C/C++ 编程的一些入门级知识。

·
所需具备的背景知识
·
开发所需的基本环境
·
获得帮助的途径
·
通过一个实例了解基本步骤


Prerequisite
先决条件:
Linux上编写 C 程序,至少要熟悉以下两方面的基础知识:

1
C语言的编程基础,至少要知道一些基本的语法,控制流程等编程常识。
对常用的标准 C 函数库有常识性的了解。

2
Linux/UNIX 的操作有常识性的了解,掌握常用的shell 命令,如 ls, cat, cp, mkdir …etc.


Environment
所需环境:

1
Linux/ Unix 的操作系统,也可以使用windows下的cygwin

我们这里讨论的都是通过shell命令行进行操作的。那如果进入了图形界面的Linux 怎么办呢?只要打开一个终端命令,就和命令行环境完全一样了(打开开始菜单可以找到终端命令)。

2
必备的开发工具:

1)
输入程序需要一个编辑器。常用的有 vi , emacs. 在命令行上输入 vi, emacs, … 就可进入编辑环境
关于 vi
关于 EMACS

2) C
语言的编译器。常用的是GNUc语言编译器 gcc(编译 C 程序), g++(编译 C ++程序)
关于 gcc / g++
关于 makefile >>>> 用于简化编译过程
这里有一片入门文章 LinuxC语言编程基础知识,可以先看一下

3)
调试程序的常用工具:gdb.
关于 gdb


Get help
获得帮助:

关于 Linux 的文档是非常丰富的。最快捷,方便,全面的资料就在你的机器里,不要浪费。

在命令行上输入shell命令 man 或者 info
$man gcc >>>>
这个命令可以获得GNU C语言编译器的文档。当然,他们是英文的。看

Basic steps 基本步骤:

1
输入源代码
2
编译,链接,运行
3
调试程序

我们从最基本的 hello world 程序开始,实际操作一下:

1
输入源代码
引用

$ emacs hello.c >>>>
进入emacs 编辑器环境

#include >>>
如果你看不懂这个函数,就去好好的看c语言的书
int main()
{
printf(“Hello World.\n”); >>>> Emacs
环境下,按下 Tab 键,有自动缩进功能
exit(0);
}


完成输入后,按住CTRL 键,按下 x, 再按下 c , 最后松开 CTRL >>>> 程序保留并退出emacs 环境。

2
编译,链接,运行

引用
$ gcc –o hello hello.c
$ ./hello >>>> ./
指明了所执行程序的路径
Hello World.
$

一个linux平台上的c程序开发已经完成咯

3
调试

如果要使用 gdb 调试程序,那么在上一步编译的时候,记得加上 –g 选项


引用
$ gcc –g –o hello hello.c
$ gdb hello >>>>
进入 gdb 调试环境

 

4. CVS
版本控制软件 —— 协同工作和保留版本的工具
关于 CVS这里向大家介绍一下在Linux/UNIX 的机器上,进行 C/C++ 编程的一些入门级知识。

·
所需具备的背景知识
·
开发所需的基本环境
·
获得帮助的途径
·
通过一个实例了解基本步骤


Prerequisite
先决条件:
Linux上编写 C 程序,至少要熟悉以下两方面的基础知识:

1
C语言的编程基础,至少要知道一些基本的语法,控制流程等编程常识。
对常用的标准 C 函数库有常识性的了解。

2
Linux/UNIX 的操作有常识性的了解,掌握常用的shell 命令,如 ls, cat, cp, mkdir …etc.


Environment
所需环境:

1
Linux/ Unix 的操作系统,也可以使用windows下的cygwin

我们这里讨论的都是通过shell命令行进行操作的。那如果进入了图形界面的Linux 怎么办呢?只要打开一个终端命令,就和命令行环境完全一样了(打开开始菜单可以找到终端命令)。

2
必备的开发工具:

1)
输入程序需要一个编辑器。常用的有 vi , emacs. 在命令行上输入 vi, emacs, … 就可进入编辑环境
关于 vi
关于 EMACS

2) C
语言的编译器。常用的是GNUc语言编译器 gcc(编译 C 程序), g++(编译 C ++程序)
关于 gcc / g++
关于 makefile >>>> 用于简化编译过程
这里有一片入门文章 LinuxC语言编程基础知识,可以先看一下

3)
调试程序的常用工具:gdb.
关于 gdb


Get help
获得帮助:

关于 Linux 的文档是非常丰富的。最快捷,方便,全面的资料就在你的机器里,不要浪费。

在命令行上输入shell命令 man 或者 info
$man gcc >>>>
这个命令可以获得GNU C语言编译器的文档。当然,他们是英文的。
关于 man
关于 info

网络上的资源也很多,多得以至于不知道什么才是自己最需要的。
关于如何获得有价值的信息

看一下 loveunix 上的相关资源 >>>>

无双补充的一些Linux下入门编程资料 >>>>

 

Basic steps
基本步骤:

1
输入源代码
2
编译,链接,运行
3
调试程序

我们从最基本的 hello world 程序开始,实际操作一下:

1
输入源代码
引用

$ emacs hello.c >>>>
进入emacs 编辑器环境

#include >>>
如果你看不懂这个函数,就去好好的看c语言的书
int main()
{
printf(“Hello World.\n”); >>>> Emacs
环境下,按下 Tab 键,有自动缩进功能
exit(0);
}


完成输入后,按住CTRL 键,按下 x, 再按下 c , 最后松开 CTRL >>>> 程序保留并退出emacs 环境。

2
编译,链接,运行

引用
$ gcc –o hello hello.c
$ ./hello >>>> ./
指明了所执行程序的路径
Hello World.
$

一个linux平台上的c程序开发已经完成咯

3
调试

如果要使用 gdb 调试程序,那么在上一步编译的时候,记得加上 –g 选项


引用
$ gcc –g –o hello hello.c
$ gdb hello >>>>
进入 gdb 调试环境

 

4. CVS
版本控制软件 —— 协同工作和保留版本的工具
关于 CVS

 

 

一,VI:常用的源代码编辑命令。

vi hello.c 在当前目录下生成hello.c,并进入命令模式

在命令模式下,不能输入,可以完成删除,复制,粘贴等操作。

1)i ao进入插入模式,可以键入字符,一般用i; ao稍有不同。

2)dd删除光标所在行

3)数字(n)+dd删除光标开始向下n

4)数字(n)+yy复制光标开始向下n

5) p 粘贴到光标处

6)u 撤消上次操作

在插入模式下,按ESC进入底行模式,主要进行存盘和退出之类的操作

1) wq 最常用,保存并退出

2)w [filename] 保存或另存

3):q! 强退出VI

gcc常见用法:

1)gcc -E hello.c -o hello.i   //预处理

2)gcc -S hello.i -o hello.s  //编译成汇编语言文件

3)gcc -c hello.s -o hello.o  //汇编成目标代码

4)gcc -c hello.c -o hello.o  //直接生成目标代码文件<最常用>

5)gcc  hello.c -o hello       //直接生成可执行文件

6)gcc hello1.o hello2.o -o hello  //链接生成可执行文件<最常用>

常见选项 :

1) -g  生成GDB调试信息,用GDB工具此项必有

2) -I dir 编译过程中包括指定目录下的头文件

3) -L dir 可能需要到dir处链接库文件

4) -llibrary 链接动态libaray库。通常不带库名的前三个字母(lib),如 -lhello表示链接libhello.so动态库

5)-static 链接静态库

6) -Wall 允许所有有用的警告

7) -O (-O2-O3)进行代码优化(分三级) ,一般不用在调试阶段

Gdb调试常见用法

gdb hello 进入调试 。编译时一定带-g选项。

常用操作:

1) l (list) 查看源代码

2) b(breakpoint) n :在第n 行设置断点

3) r (run) 运行

4) n(next) 单步执行,不进入函数内部,相当于VCF10

5) s(step) 单步执行,进入函数内部,相当于F11

6) c(contiue) 继续执行,从当前运行处到下一个断点或者程序结束。

7) p var :查看变量var的当前值

8)finish 运行到程序结束

跟断点相关的有用命令:

1)info b 查看所有设置的断点的相关信息

2) b function function函数所在行设置断点

3) b 行数或函数名 if 表达式     满足表达式时运行中断 <感觉比较重要>

4) delete [断点号] 删除

5)disable [断点号] 禁用

6)enable[断点号]激活

若不带断点号,则命令对所有断点号用效,断点号可用info b得到。

7)ignore [断点号] N  忽略断点N次,对循环一类的程序有用。

查看运行过程中变量的有用命令:

print 表达式或变量

display 表达式 ,听说能自动显示对应表达式内容 (还没试过)

修改变量命令:

set var=value 设置变量值。

阅读(1813) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

liurhyme2010-08-13 15:20:10

C编程在哪里呢?