gcc说明
2021-02-02, updated 2021-10-31
GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等。)
编译过程
- 预处理
|
|
- 编译
|
|
- 汇编
|
|
- 链接
|
|
GCC堆栈保护技术
编译参数
- -fPIC
用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code),产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正式共享库所要求的,共享库被加载时,在内存的位置不是固定的。
|
|
gcc的-shared选项可能已经包含fPIC选项,但是不保证一定会有,使用时最好加上fPIC选项。
–sysroot=<directory> Use <directory> as the root directory for headers and libraries
-print-sysroot Display the target libraries directory