红联Linux门户
Linux帮助

Linux中的C/C++编译器GCC

发布时间:2007-04-28 00:44:34来源:红联作者:Change
Linux中最重要的C/C++编译工具 是GNU的GCC。实际上GCC能够编译三种语言:C,C++,Object C(C语言的一种面向对象扩展)。利用GCC命令可以同时编译并连接C和C++的源程序。

如果只有少数几个C源文件,可以方便的用GCC命令进行编译,连接并生成可执行文件。如果是一个工程,涉及很多文件,最好是做一个Makefile文件进行整体编译和连接。

对于C++语言,GCC命令只能编译C++源文件,而不能自动和C++程序使用的库文件进行连接,因此,通常用G++命令来完成C++程序的编译和连接,该命令会自动调用GCC实现编译。

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 生成所有警告信息。
文章评论

共有 3 条评论

  1. lg0812 于 2007-05-06 21:02:58发表:

    :ha3nd :ha3nd :0L :0L

  2. xuelanghu623 于 2007-05-02 14:57:51发表:

    非常的经典啊。

  3. karon_fedora 于 2007-04-30 22:52:19发表:

    -pass-exit-codes 在某一阶段退出时返回最高的错误码
    --help 显示此帮助说明
    --target-help 显示目标机器特定的命令行选项
    (使用‘-v --help’显示子进程的命令行参数)
    -dumpspecs 显示所有内建 spec 字符串
    -dumpversion 显示编译器的版本号
    -dumpmachine 显示编译器的目标处理器
    -print-search-dirs 显示编译器的搜索路径
    -print-libgcc-file-name 显示编译器伴随库的名称
    -print-file-name=<库> 显示 <库> 的完整路径
    -print-prog-name=<程序> 显示编译器组件 <程序> 的完整路径
    -print-multi-directory 显示不同版本 libgcc 的根目录
    -print-multi-lib 显示命令行选项和多个版本库搜索路径间的映射
    -print-multi-os-directory 显示操作系统库的相对路径
    -Wa,<选项> 将逗号分隔的 <选项> 传递给汇编器
    -Wp,<选项> 将逗号分隔的 <选项> 传递给预处理器
    -Wl,<选项> 将逗号分隔的 <选项> 传递给链接器
    -Xassembler <参数> 将 <参数> 传递给汇编器
    -Xpreprocessor <参数> 将 <参数> 传递给预处理器
    -Xlinker <参数> 将 <参数> 传递给链接器
    -combine 将多个源文件一次性传递给汇编器
    -save-temps 不删除中间文件
    -pipe 使用管道代替临时文件
    -time 为每个子进程计时
    -specs=<文件> 用 <文件> 的内容覆盖内建的 specs 文件
    -std=<标准> 指定输入源文件遵循的标准
    --sysroot=<目录> 将 <目录> 作为头文件和库文件的根目录
    -B <目录> 将 <目录> 添加到编译器的搜索路径中
    -b <机器> 为 gcc 指定目标机器(如果有安装)
    -V <版本> 运行指定版本的 gcc(如果有安装)
    -v 显示编译器调用的程序
    -### 与 -v 类似,但选项被引号括住,并且不执行命令
    -E 仅作预处理,不进行编译、汇编和链接
    -S 编译到汇编语言,不进行汇编和链接
    -c 编译、汇编到目标代码,不进行链接
    -o <文件> 输出到 <文件>
    -x <语言> 指定其后输入文件的语言
    允许的语言包括:c c++ assembler none
    ‘none’意味着恢复默认行为,即根据文件的扩展名猜测
    源文件的语言
    以实际行动支持楼主,此段引自man gcc

    [ 本帖最后由 karon_fedora 于 2007-4-30 22:53 编辑 ]