310 likes | 541 Views
Linux 编程工具. 内容. Code : :blocks Vim GCC GDB. Code::blocks. 一个开放源码 的全功能的跨平台 C/C++ 集成开发环境 由纯粹的 C++ 语言开发完成,它使用 了著名的图形界面库 wxWidgets 可扩展插 件,有插件向导功能,让你很方便的创建自己的插 件 本身不提供编译功能,但能通过调 用第三方编译代码. Code::blocks 界面. Code::blocks 编辑调试界面. 如有需要,请自学 Code::blocks 的使用. Linux 下 c/ c++ 程序开发. 编辑器 (vi & vim).
E N D
内容 • Code::blocks • Vim • GCC • GDB
Code::blocks • 一个开放源码的全功能的跨平台C/C++集成开发环境 • 由纯粹的C++语言开发完成,它使用了著名的图形界面库wxWidgets • 可扩展插件,有插件向导功能,让你很方便的创建自己的插件 • 本身不提供编译功能,但能通过调用第三方编译代码
Code::blocks编辑调试界面 如有需要,请自学Code::blocks的使用
编辑器(vi&vim) • vi是linux系统最重要的文本编辑器,所有的 Unix-Like 系统都会内置。 • vim从 vi 发展出来的,完全兼容vi,并扩展了很多额外的强大功能。 • vim 的官方网站称自己是一个“程序开发工具”,而非简单的文字处理软件。
为什么Vim • 所有的 Unix Like 系统都会内建vi 文本编辑器,其他的文本编辑器则不一定会存在 • vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计 • 因为程序简单,编辑速度相当快速
编译器(GCC/G++) • GCC(GNU Compiler Collection,GNU编译器集合) • 被大多数Unix-like操作系统采纳为标准编译器,也适用Windows • 原名GNU C Compiler,只处理C语言 • 之后扩展可处理C++、 Fortran、Pascal等其他语言 • GCC和G++都是GNU的编译器 • 两者都可以编译c代码和c++代码 • 后缀为.c的, gcc把它当作是c程序, 而g++当作是c++程序; • 后缀为.C / .cc / .cpp的, 两者都会认为是c++程序.
调试器(GDB) • GNU开源组织发布 • 一个强大的linux下的程序调试工具 • 主要功能: • 启动你的程序,可以按照自定义的要求随心所欲的运行程序。 • 可让被调试的程序在你所指定的断点处停住。 • 当程序被停住时,可以检查此时你的程序中所发生的事。 • 动态的改变你程序的执行环境。
makefile & make • 一个软件项目通常包含多个源码文件 • 每个源代码的编译和可执行文件的链接都要书写大量的命令.如Linux 下进行编译要大量调用gcc来处理 • 如果用IDE开发环境, 这编译和链接一般由IDE自动完成 • 但绝大部分Linux和开源项是使用gcc之类命令行工具来编译,如 MySQL、操作系统本身 • 有些项目里,代码通常有引用的关系,需要编译的先后顺序 • Makefile就为解决上述一系统问题而创造的 • make是一个命令工具,是一个解释makefile中指令的命令工具
举例 ex_main.cpp ex_output.cpp #include <stdio.h> #include "ex_output.h" int main() { display("Hello world!\n"); return 0; } #include <stdio.h> int display(const char *str) { printf( "The str is %s\n", str ); return 0; } g++ -c ex_main.cppex_output.cpp g++ -0 ex_mainex_main.oex_output.o
makefile main: ex_main.oex_output.o g++ -o ex_mainex_main.oex_output.o ex_main.o:ex_main.cpp g++ -c ex_main.cpp ex_output.o:ex_output.cpp g++ -c ex_output.cpp
模式 • Normal模式 • i键切换到insert模式 • :键切换到命令行模式 • Insert模式 • 输入文本 • Esc键,切换到noraml模式 • 命令行模式 • Normal模式下按
Normal模式常用操作 • i:切换到Insert模式 • :wq→ 存盘 + 退出 (:w 存盘, :q 退出,:w 后可以跟文件名) • :q 退出 • :q!不存盘退出 • dd:删除当前行,并将删除的内容存到剪贴板 • p: 粘贴剪贴板 • 强烈建议使用hjkl
命令行模式 • Normal模式下按:键进入 • 常用 :q! 不保存退出vim。 :w 保存文档,但不退出vim。 :x 保存退出vim。 :! command 运行shell命令。 :e filename 编辑/打开一个文件
自学推荐 • http://linuxconfig.org/vim-tutorial • http://coolshell.cn/articles/5426.html
GCC编译的步骤 在汇编阶段,将输入的汇编文件*.s转换成机器语言*.o。这个阶段对应的GCC命令如下所示: GCC -c test.s -o test.o 在编译阶段,输入的是中间文件*.i,编译后生成汇编语言文件*.s 。这个阶段对应的GCC命令如下所示: gcc-S test.i -o test.s 在预处理阶段,输入的是C语言的源文件,通常为*.c。它们通常带有.h之类头文件的包含文件。 这个阶段主要处理源文件中的#ifdef、 #include和#define命令。该阶段会生成一个中间文件*.i。 实际工作中通常不用专门生成这种文件,因为基本上用不到;若非要生成这种文件不可,可以利用下面的示例命令: gcc -E test.c -o test.i 在连接阶段将输入的机器代码文件*.s(与其它的机器代码文件和库文件)汇集成一个可执行的二进制代码文件。这一步骤,可以利用下面的示例命令完成 GCC test.o -o test
GCC常用模式 • $ GCC -c test.c • $ GCC -o test • $ GCC -o test first.csecond.cthird.c • $ gcc -Wall test.c -o test • 在众多的警告选项之中,最常用的就是-Wall选项。该选项能发现程序中一系列的常见错误警告
GDB使用入门 • gcc –g 选项 • 调用gdb • file: 调用可执行文件 • r: 执行 • b: 设置断点 • c: 继续执行直到下一个断点 • s:执行一行代码,如有函数,则进入 • n:执行一行代码,如有函数,则调用一并执行 • p:print,可以查看变量的值, 例如:pn b <行号> 例如: b8 b <函数名称> 例如:bmain
编译时加上参数 –g • g++ 1.cpp –o mytest -g
GDB使用参考 • http://cs.baylor.edu/~donahoo/tools/gdb/tutorial.html • http://www.cprogramming.com/gdb.html • http://blog.csdn.net/lyjtynet/article/details/4057723
上机实验内容 • 熟悉Linux环境 • 启动软件、安装软件 • 使用终端 • 常用命令 • 掌握:ls,cd,pwd,mkdir,rm,rmdir,mv,cp,cat,more,whereis,chmod,ps,kill, jobs, bg, fg, • 了解:tar,gzip,grep,wc,wget • 熟悉linux下的编程环境 • 推荐 vim+gcc+gdb • 可以使用code::blocks