关于gcc

作者: 小胖_20c7 | 来源:发表于2019-05-29 17:42 被阅读0次
    gcc的文件组成
    1 /usr/bin(提供可执行文件gcc等)
    2 /usr/lib/gcc/x86_64-redhat-linux
        1 include文件夹(给编译的时候,提供一些头文件)
        2 crt*.o文件(给链接的时候,提供一些预设的obj文件,主要是针对c++的构造函数和析构函数)
        3 libgcc.a(是为了gcc跨平台编译实现的库,提供一些浮点计算,整型计算等函数)
        4 libgcc_eh.a(为了处理c++异常实现的库)
    3 /usr/libexec/gcc/x86_64-redhat-linux
        1 cc1(提供给gcc内部调用的c编译器)
        2 cc1plus(提供给gcc内部调用的cpp编译器)
        3 collect2(提供给gcc内部调用的链接器,它本质上调用ld)
    4 /usr/libexec/getconf/default
        1 gcc需要的一些平台参数缺省值
    5 /usr/share/doc
    6 /usr/share/info
    7 /usr/share/man
    8 /usr/share/locale
    
    gcc内部使用的程序:
    cpp(package = cpp)
    cc1(package = cpp)
    cc1plus(package = gcc-c++
    as(package = binutils)
    collect2(package = gcc)
    
    gcc涉及到的头文件
    1 属于内核的头文件(kernel-headers):
        asm  asm-generic  drm  linux  mtd  python2.6  rdma  sound  uapi  video  xen
    2 属于glibc的头文件(glibc-headers):
        /usr/include/**/*.h
    3 属于gcc的头文件:
        /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/\*.h
    4 属于g++的头文件:
        /usr/include/c++/**/*.h
    5 用户的头文件:
        自定义位置
    
    gcc涉及到的库文件
    1 glibc(ld.so, libc.so, librt.so等)
    2 libgcc(libgcc_s.so,为了实现跨平台编译,提供了一套相关的跨平台函数)
    3 libstdc++(libstdc++.so)
    4 crt1.o(提供入口函数)
    5 crti.o  crtn.o(提供初始化函数和清理函数)
    
    关于库文件的链接顺序
    ld crt1.o crti.o user.objs system.objs crtn.o
    
    gcc头文件搜索路径
    `gcc -print-prog-name=cc1` -v
    `gcc -print-prog-name=cc1plus` -v
    
    gcc其它搜索路径(包括lib的静态搜索路径)
    gcc -print-search-dirs

    相关文章

      网友评论

          本文标题:关于gcc

          本文链接:https://www.haomeiwen.com/subject/fhfytctx.html