当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

gcc与g++

    Linux 中最重要的软件开发工具是 GCC。GCC 是 GNU 的 C 和 C++ 编译器。实际上,GCC 能够编译三种语言:C、C++ 和 Object C(C 语言的一种面向对象扩展)。利用 gcc 命令可同时编译并连接 C 和 C++ 源程序。

 

    GCC 可同时用来编译 C 程序和 C++ 程序。一般来说,C 编译器通过源文件的后缀名来判断是 C 程序还是 C++ 程序。在 Linux 中,C 源文件的后缀名为 .c,而 C++ 源文件的后缀名为 .C 或 .cpp。

    gcc 命令只能编译 C++ 源文件,而不能自动和 C++ 程序使用的库连接。因此,通常使用 g++ 命令来完成 C++ 程序的编译和连接,该程序会自动调用 gcc 实现编译。

    选项 解释
    -ansi 只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色,
    例如 asm 或 typeof 关键词。
    -c 只编译并生成目标文件。
    -DMACRO 以字符串“1”定义 MACRO 宏。
    -DMACRO=DEFN 以字符串“DEFN”定义 MACRO 宏。
    -E 只运行 C 预编译器。
    -g 生成调试信息。GNU 调试器可利用该信息。
    -IDIRECTORY 指定额外的头文件搜索路径DIRECTORY。
    -LDIRECTORY 指定额外的函数库搜索路径DIRECTORY。
    -lLIBRARY 连接时搜索指定的函数库LIBRARY。
    -m486 针对 486 进行代码优化。
    -o FILE 生成指定的输出文件。用在生成可执行文件时。
    -O0 不进行优化处理。
    -O 或 -O1 优化生成代码。
    -O2 进一步优化。
    -O3 比 -O2 更进一步优化,包括 inline 函数。
    -shared 生成共享目标文件。通常用在建立共享库时。
    -static 禁止使用共享连接。
    -UMACRO 取消对 MACRO 宏的定义。
    -w 不生成任何警告信息。
    -Wall 生成所有警告信息。


    GNU 的调试器称为 gdb

    由于软件项目越来越大,也增加了软件项目管理的难度。在开发组中,每个成员都要保留一个副本,在开发中非常容易引起冲突。CVS 就是为了解决这个问题的。
    a、修改同步,防止一名开发人员的修改覆盖其他人的成果。(check out、read only)

    b、维护不同的版本。(按 version 查找)

    c、可查找历史记录。防止 bug 的再引入。(diff)

    CVS 为了解决这个问题,采用的方式是:

    当开发人员对源代码进行修改时,修改的内容被登记(check in)到了 CVS 仓库(repository)中。仓库中保存了代码的主控副本,以及历次修改的历史信息。它不保存文件的每个版本,而只是简单的记录发生在每个版本间的不同,节省磁盘空间。它能做到:

    a、使开发人员的目录和仓库保持一致。可以把自己的修改提交(commit)给仓库,让仓库更新自己。

    b、允许代码派生。可以进行测试,如果失败,可以消除所做的修改,维持原结果。

    c、检索任何一个版本。

相关内容
赞助商链接