GCC的使用和一些常用选项

简介: GCC的使用和一些常用选项

常用编译选项


  • -E:预处理,快速定位某个宏可以使用"-E -dM";


  • -S:编译后即停止,不进行汇编,对于每个输入的非汇编文件,输出汇编语言文件


  • -c:预处理,编译,汇编,但是不链接,编译器根据源文件生成obj文件;


  • -o:指定输出文件;


  • -I:指定头文件目录;


  • -L:指定链接时头文件目录;


  • -l:指定链接其中的库文件;


编译多个文件


一起编译链接


gcc -o test a.c b.c


分开编译链接


gcc -c -o a.o a.c
gcc -c -o b.o b.c
gcc -o test a.o b.o


制作和使用动态库


制作


    gcc -c -o a.o a.c
    gcc -c -o sub.o sub.c
    gcc -shared -o libsub.so sub.o //可以使用多个.o文件生成动态库
    gcc -o test a.o -lsub -L/libsub.so所在目录


    运行


    • 把libsub.so复制到板子上的/ lib目录下


    • 如果放在其他目录,需要设置环境变量(export LD LIBRARY PATH = / path)
    • ./test


    制作和使用静态库



    gcc -c -o a.o a.c
    gcc -c -o sub.o sub.cL
    ar crs -o libsub.a sub.o //可以使用多个.o文件生成动态库
    gcc -o test a.o -lsub -L/libsub.a所在目录


    运行


    • 不需要复制libsub.a


    • ./test


    其他选项


    • -Wall:警告选项。输出所有警告信息


    • -g:调试选项。以操作系统的本地格式(stabs,COFF,XOFF或DWARF)产生调试信息,GDB能够使用这些调试信息


    • -O或-O1:优化选项。对于大函数,优化编译过程会占用稍微多的时间和相当大的内存。不使用优化选项的目的是为了减少编译的体积,使编译结果能够调试,语句独立。


    • -O2:多优化了一些。除了涉及空间和速度交换的优化选项,执行了几乎所有的优化工作。和-O或O1比较,即增加了编译时间,也提高了生成代码的运行时间


    • -O3:优化的更多。除了打开O2的一切,还打开了-finline-functions选项


    • -O0:不优化


    • -nostartfiles:不链接系统标准启动文件


    • -nostdlib:不链接系统标准启动文件和标准库文件


    • -static:仅使用静态库链接


    • -share:生成一个共享obj文件


    相关文章
    |
    6月前
    |
    编译器 Linux 开发工具
    |
    3月前
    |
    前端开发 C语言
    gcc动态库升级
    gcc动态库升级
    |
    27天前
    |
    编译器 Linux C语言
    gcc的编译过程
    GCC(GNU Compiler Collection)的编译过程主要包括四个阶段:预处理、编译、汇编和链接。预处理展开宏定义,编译将代码转换为汇编语言,汇编生成目标文件,链接将目标文件与库文件合并成可执行文件。
    54 11
    |
    3月前
    |
    编译器 开发工具 C语言
    Gcc 链接文件
    Gcc 链接文件
    33 4
    |
    3月前
    |
    编译器 C语言 C++
    MinGW安装gcc
    MinGW安装gcc
    81 0
    |
    5月前
    |
    自然语言处理 编译器 Go
    GCC:GNU编译器
    GCC:GNU编译器
    |
    5月前
    |
    Java 编译器 Linux
    技术经验解读:【转载】详解GCC的下载和安装(源码安装)
    技术经验解读:【转载】详解GCC的下载和安装(源码安装)
    157 0
    |
    5月前
    |
    C语言
    关于如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令
    关于如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令
    |
    6月前
    |
    C语言
    gcc的简易用法(编译、参数与链接)
    【5月更文挑战第14天】gcc的简易用法(编译、参数与链接)。
    57 1
    |
    6月前
    |
    Unix Java 编译器
    安装gcc
    【5月更文挑战第14天】安装gcc。
    106 1