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 -E hello.c -o hello.i
gcc -S hello.c -o hello.s
gcc -c hello.c -o hello.o
gcc hello.o -o hello

GCC堆栈保护技术

编译参数

  1. -fPIC

用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code),产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正式共享库所要求的,共享库被加载时,在内存的位置不是固定的。

gcc -shared -fPIC -o 1.so 1.c

gcc的-shared选项可能已经包含fPIC选项,但是不保证一定会有,使用时最好加上fPIC选项。

  1. –sysroot=<directory> Use <directory> as the root directory for headers and libraries

  2. -print-sysroot Display the target libraries directory

words: 377 tags: gcc