• gcc常用命令


    gcc常用命令

    参考链接:Linux C编程基础 娄嘉鹏
    GCC编译器(Linux gcc命令)30分钟入门教程

    一、命令格式

    gcc [-c|-S|-E] [-std=standard]
               [-g] [-pg] [-Olevel]
               [-Wwarn...] [-Wpedantic]
               [-Idir...] [-Ldir...]
               [-Dmacro[=defn]...] [-Umacro]
               [-foption...] [-mmachine-option...]
               [-o outfile] [@file] infile...
    

    二、常用选项

    选项 作用 示例
    -E 仅执行预编译 gcc -E hello.c -o hello.i
    -S 将C代码转换为汇编 gcc -S hello.i -o hello.s
    -c 仅执行编译操作,不进行链接操作 gcc -c hello.s -o hello.o
    -o 指定生成的输出文件。If -o is not specified, the default is to put an executable file in a.out, the object file for source.suffix in source.o, its assembler file in source.s, a precompiled header file in source.suffix.gch, and all preprocessed C source on standard output.
    -I(大写的i) 指定头文件目录 gcc main.c -I ../include -o main
    -L 指定库文件所在的目录 gcc ../src/main.c -I ../include/head.h -L ../libs/ -l math
    -l 指定程序要链接的库 gcc会在静态库名前加上前缀lib,然后追加扩展名.a得到的静态库文件名来查找静态库文件;动态库追加扩展名.so

    三、创建库

    • 静态库
      1、输入gcc -c -I/头文件目录 xxx.c生成.o文件
      2、输入ar rcvs libxxx.a xxx.o生成静态库

    • 动态库
      1、输入gcc -fPIC -c -I/头文件目录 xxx.c生成.o文件

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

      2、输入gcc -shared -o libmath.so xxx.o生成库

    四、指定C版本

    C版本 GCC选项
    GNU 89 无, -std=gnu89
    ANSI, ISO C90 -ansi,-std=89
    ISO C99 -std=c99
    ISO C11 -std=c11

    五、指定xx位程序

    • gcc -m32 proc.c
      32位程序,可以在32位和64位机器上运行
    • gcc -m64 proc.c
      64位程序,只能在64位机器上运行
  • 相关阅读:
    SGU 194. Reactor Cooling(无源汇有上下界的网络流)
    SGU 197.Nice Patterns Strike Back
    Codeforces 474E
    记一个问题的AC
    UVM Primer
    UVM Primer
    UVM Primer
    UVM Primer
    UVM Primer
    UVM Primer
  • 原文地址:https://www.cnblogs.com/20175211lyz/p/11565047.html
Copyright © 2020-2023  润新知