Linux学习笔记-3-gcc

gcc四步骤

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

  • 最基本操作

    vi hello.c
    gcc hello.c -o hello
    ./hello
    
  • -I 目录 指定头文件目录,注意-I和目录之间没有空格

    mkdir inc
    mv hello.h inc
    gcc -I./inc hello.c -o hello
    ./hello
    
    • 运行家目录下的

      gcc hello.c -o a.out -I ~/inc
      ./a.out
      
  • -c :只做预处理、编译、汇编,得到二进制文件!!!

  • -g:编译时添加调试文件,主要是支持gdb调试

    gcc hello.c -o hello1
    gcc hello.c -o hello2 -g
    
  • gdb:调试

    file hello1(生成的可执行文件)
    list (源码没列出来)
    file hello2(生成的可执行文件中有调试文件)
    list (会将源码列出来)
    
    b 5 (断点打在第五行)
    r(运行)
    run (运行)
    q (退出)
    
  • -Wall:显示所有警告信息

  • -D:向程序中"动态"注册宏定义

    #include "hello.h"
    
    #ifdef HELLO
    #define HI 20
    #endif
    
    
    int main(int argc,char *argv[]){
            int b =10;
            int a =10;
    
            printf("----------%d\n",HI);
            return 0;
    }
    
    

    操作指令:

    gcc hello.c -D HELLO
    ./a.out
    

创建静态库

静态库:对空间要求较低,而时间要求较高的核心程序中

动态库:对时间要求较低,对空间要求较高。

  1. 将.c 生成.o文件

    gcc -c add.c -o add.o
    
  2. 使用ar 工具制作静态库

    ar rcs libmymath.a add.o div1.o sub.o
    
  3. 编译静态库到可执行文件中:

    gcc test.c lib库名.a -o a.out
    

头文件防卫:

防止头文件被重复包含

#ifdef _HEAD_H_
#define _HEAD_H_

....
#endif

动态库制作及使用

  1. 将.c 生成.o (生成与位置无关的代码 -fPIC)

    gcc -c add.c -o add.o -fPIC
    
  2. 使用gcc -shared 制作动态库

    gcc -shared lib库名.so add.o sub.o div1.o
    
  3. 编译可执行程序时,指定所使用的动态库。

    -l:指定库名

    -L:指定库路径

    gcc test.c -o a.out -lmymath -L./lib
    
  4. 运行可执行程序

    ./a.out
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值