在一台最小化安装 CentOS 6.8 操作系统的计算机上,需要调试 C 程序。使用命令 yum install gcc 安装 GCC 编译器,使用命令 yum install gdb 安装 GDB 调试器就可以开始工作了。GDB 的功能非常强大,但是使用起来并不方便。为了提高效率,最好还是使用一个 IDE。Eclipse CDT (C/C++ Development Tooling) 的功能很强大,但是体积也比较大,安装过程比较复杂。相比之下,Code::Blocks (官网为:http://www.codeblocks.org/) 是一款更加轻巧的IDE,于是选择了Code::Blocks,把安装和使用的过程简单介绍一下:
1)安装 Code::Blocks;
使用以下命令:yum install codeblocks
2)启动 Code::Blocks;
在命令行模式下无法启动 Code::Blocks,需要进入图形界面。这台计算机上没有安装 KDE 或 Gnome,还好安装了 OpenBox,使用以下命令启动它:
xinit /usr/bin/openBox-session
在图形界面中点击鼠标右键,在弹出菜单中选择 Terminals -> Terminal 启动终端,在其中输入命令 codeblocks ,Code::Blocks就启动了,如下图:
通过 yum 命令安装的 Code::Blocks 版本较老,如果想装新版本可以到官网上去下载。这里的介绍仍以老版本为例。
3)创建一个简单的程序;
点击上图中的“Create a new project”链接,会弹出向导提示窗,根据提示一步一步操作,Code:Blocks能自动检测到当前已安装了 GCC 编译器,在选择要创建的项目类型这一步,选择“控制台应用”,如下图:
根据向导提示操作,比如输入项目的名称、填写输出文件的保存路径,在全部操作完成之后,会自动生成一个输出“Hello Word!”字符串的示例程序,如下图:
尝试编译这个程序,报告错误:Process terminated with status 127,提示 g++ 未安装。
于是先退出 Code::Blocks,使用以下命令安装 g++:
yum install gcc-c++
安装完成后,启动 Code::Blocks 编译这个程序,报告错误:Process terminated with status 255。出现这个错误的原因是 Code::Blocks 默认通过一个叫 xterm 的程序来输出控制台程序的结果。退出 Code::Blocks,使用以下命令安装 xterm:
yum install xterm
安装完成后,启动 Code::Blocks 编译这个程序,能够正确输出字符串,如下图所示:
4)编译程序时要注意的问题;
在编译 C 程序时,有时会出现错误提示,类似于“undefined reference to 函数名”,出现这个问题的原因在于 Code::Blocks 没有找到这个函数对应的 .a 或 .so 库文件。要手动指定库文件的方法是在 Settings 菜单中点击 Compiler and debugger,如下图:
在 Linker settings 选项卡中,点击 Add 按钮,如下图:
选择函数对应的库文件,比如有一个程序需要用到 64 位的多线程库,可以选中 libpthread-2.12.so 文件,然后点击 Open 按钮,如下图:
再次编译程序,就能够通过编译了。
5)一个有趣的现象;
在创建控制台应用程序时,如果只安装了 GCC,没有安装 g++,在向导中不会出现让用户选择要使用的语言是 C 还是 C++ 的步骤。在安装 g++ 之后,再创建控制台应用程序时,就会出现选择语言类型是 C 还是 C++ 这一步了,如下图所示: