gcc的编译及动态静态库的使用

一、gcc的编译

预处理(pre-processing) E:插入头文件,替换宏,将stdio.h文件中的内容插入到hello.c中

编译(compliling) S:编译成汇编代码

汇编(Assembling) c:编译成目标文件

链接(Linking):链接到库中,变成可执行文件

1.gcc常用选项

o 生成目标

E 只运行C预编译器(头文件,宏等展开)

S 表示程序编译期间,生成汇编语言文件后停止编译(.s文件)

c 取消链接步骤,编译源码并最后生成目标文件

Wall 打开编译告警

2.栗子

hello.c

#include<stdio.h>
int main(void)
{
 printf("Hello World");
 return 0;
}

预处理 gcc -E hello.c -o hello.i

编译 gcc -S hello.i -o hello.s

汇编 gcc -c hello.s -o hello.o

链接 gcc hello.o -o hello

二、动态库编译与调用

1.编写动态库文件

func.c

#include <stdio.h>

void func(void)
{
    printf("test dynamic lib \n");
}

2.编译为动态库

gcc -c func.c -o func.o -fPIC

gcc func.o -o libfunc.so -shared

3.调用动态库

main.c

#include <stdio.h>
  
void func(void);

int main(void)
{
    func();
    return 0;
}

gcc main.c -o main -L . -l func

./main

需要把动态库文件放到/usr/lib/目录下

三、静态库编译与调用

1.编写静态库文件

func.c

#include <stdio.h>
  
void func(void)
{
    printf("test static lib \n");
}

2.编译静态库文件

gcc -c func.c -o func.o

ar -crv libfunc.a func.o

3.调用静态库

main.c

#include <stdio.h>
  
void func(void);

int main(void)
{
    func();
    return 0;
}

gcc main.c -o main -L . -l func

./main

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值