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
网友评论