gcc 预处理、编译、汇编、链接

  1.  -E
    

    预处理,将头文件展开,替换#define,删掉注释。

    -C
    

    阻止预处理器删除注释。

  2.  -S
    

    生成汇编后的文件,

    -fverbose-asm circle.c
    

    将变量名作为注释。

  3.  -c
    

    生成目标文件,还差一步链接,重定位:将符号换为地址。

  4.  -o
    

    指定输出文件的文件名

  5.  -I目录
    

    附加的头文件搜索路径,是大写i.

  6. 关于链接库

    1. 编译、链接时需要链接库

      -lname -Lpath 
      

      附加链接库路径path,或者在系统链接库路径下无需写-L,链接库名字是libname.so/a(动态链接库/静态链接库)

    2. 生成自己的链接库

      1. 生成动态链接库

        g++ name1.cpp name2.cpp -fPIC -shared -o libname.so
        

        动态链接库运行是需要加载,所以要放在系统链接库路径下。

      2. 生成自己的静态链接库

        g++ name1.cpp name2.cpp -c #生成目标文件
        ar rcs libname.a name1.o name2.o
        
        

        libname.a为生成的静态链接库,后边的是需要整合的目标文件,静态链接库运行时不需要系统加载,链接完后就可以删掉了,因为链接完相当于把链接库附加进可执行文件了。

  7. objdump:目标文件查看

    1. -h
      打印各段的基本情况
    2. -s
      打印各段的十六进制内容
    3. -d
      将包含指令的段内容反汇编
posted @ 2020-02-22 22:36  hellozhangjz  阅读(167)  评论(0)    收藏  举报