栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux学习笔记-3-gcc

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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("----------%dn",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
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/941383.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号