zoukankan      html  css  js  c++  java
  • gcc 常用选项详解

    gnu gcc onlinedocs

    https://gcc.gnu.org/onlinedocs/gcc-5.5.0/gcc/


    gcc编译C程序的四个步骤。
    1,预处理
    2,编译
    3,汇编
    4,链接
    gcc 目录搜索选项(Options for Directory Search)

    -Idir

      

    添加dir目录作为头文件搜索路径,这个 dir 目录比系统头文件目录被搜索的早,所以可以通过它用自己的头文件代替系统头文件。如果有多个 -I 选项,按从左到右的顺序搜索,系统默认目录在这之后。如果该选项的dir是系统默认目录,则忽略该选项,且不改变搜索顺序。

    -iquotedir

      
    添加dir目录作为头文件搜索路径,只对引号情况有效:#include "file";
    不作为尖括号的情况:#include <file> 两者都搜索用 -I

    -Ldir

      

    添加dir目录到用于搜索 -l 选项的目录列表。

    --sysrootdir

        1

    用 dir 作为头文件和库的根目录,例如,如果编译器正常情况下在/usr/include 找头文件,在 /usr/lib 中找库文件,在这之后,更改为dir/usr/include and dir/usr/lib.
    gcc 链接选项(Options for Linking)

    -llibrary
    -l library
    Search the library named library when linking.


    链接时候搜索名为 library 的库,-l 和库的名字之间可以有空格也可以没有,例如 -lname 意思是寻找名为name的库,在标准库中库的名字一般为:
    lib name.a , 搜索路径包括系统默认l目录(/lib and /usr/lib),和用 -L 参数指定的目录。在没有使用-static 选项时,发现共享库name.so , 则使用name.so 进行动态链接。(共享库后缀.so 静态库.a)

    -static

        1

    禁止与共享库链接

    -shared

      

    尽量与共享库链接,这是默认选项。

    -c   Compile or assemble the source files, but do not link.

      

    只对源文件进行编译,不链接生成可执行文件。只需要产生目标文件时候使用该选项。

    -S    Stop after the stage of compilation proper; do not assemble.

      

    只对源码文件编译,不装配不链接。输出为装配码文件

    -E      Stop after the preprocessing stage; do not run the compiler proper.

        1

    只进行预预处理,输出为与编译源码文件。
    调试选项(Debugging Your Program)

    -g

      

    生成供 gdb 使用的调试信息。

    -ggdb

      

    产生更多的调试信息。

    -O[0,1,2,3]

      

    优化程序,默认2级优化,0 不优化,优化和调试不兼容,所以不要同时使用-g 和-O 选项。

    -o filename (小写) 指定输出文件名,默认 a.out

      

    一、头文件的来源

    gcc 在编译时如何去寻找所需要的头文件:
    ※所以header file的搜寻会从-I开始
    ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
    ※再找内定目录
    /usr/include
    /usr/local/include(centos7中该目录下是空的)
    gcc的一系列自带目录
    /usr/include/c++/4.8.5
    二、库文件的来源

    编译的时候:
    ※gcc会去找-L
    ※再找gcc的环境变量LIBRARY_PATH
    ※再找内定目录
    /lib和/lib64
    /usr/lib 和/usr/lib64
    /usr/local/lib和/usr/local/lib64
    ---------------------
    作者:ims-
    来源:CSDN
    原文:https://blog.csdn.net/sinat_36219858/article/details/80348889
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    【原】文本图片自适应高度小bug以及解决办法
    【原】iOS学习39网络之数据请求
    【原】iOS学习38网络之数据解析
    iOS数据持久化文件读写之偏好设置
    SQLite错误码
    iOS开发代码规范(通用)
    iOS学习37数据处理之CoreData
    iOS中的单例
    iOS学习36数据处理之SQLite数据库
    UIImage两种初始化的区别
  • 原文地址:https://www.cnblogs.com/idyllcheung/p/11303086.html
Copyright © 2011-2022 走看看