分类:
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语言的编译器。常用的是GNU的c语言编译器
gcc(编译 C 程序), g++(编译 C ++程序)。
关于 gcc / g++
关于 makefile
>>>> 用于简化编译过程
这里有一片入门文章
Linux下C语言编程基础知识,可以先看一下
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语言的编译器。常用的是GNU的c语言编译器 gcc(编译 C 程序), g++(编译 C ++程序)。
关于 gcc / g++
关于 makefile
>>>> 用于简化编译过程
这里有一片入门文章
Linux下C语言编程基础知识,可以先看一下
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 或a或o进入插入模式,可以键入字符,一般用i; a与o稍有不同。
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) 单步执行,不进入函数内部,相当于VC下F10
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 设置变量值。