练习静态库.a文件与动态库.so文件的生成与使用

这篇博客详细介绍了如何在Ubuntu16.04系统中使用gcc和makefile编译C语言程序,包括如何生成和使用静态库.a文件以及动态库.so文件的步骤。通过实例展示了从源代码到可执行程序的完整过程。
摘要由CSDN通过智能技术生成


接上篇博文 Ubuntu16.04系统中分别使用gcc与makefile编译C语言程序

一、扩写程序

程序一:sub2.h

#ifndef __SUB1_H
#define __SUB1_H

#include "stdio.h"

float x2y(int a,int b);

#endif

在这里插入图片描述

程序二:sub2.c

include "sub2.h"

float x2y(int a,int b)
{
      float x;
      x=(float)a*b;
      return x;
}

在这里插入图片描述

程序三:main.c

#include "stdio.h"
#include"sub1.h"
#include"sub2.h"
int main()
{
     int a=3;
     int b=7;
     printf("a/b=%f",x2x(a,b));
     printf("a/b=%f",x2y(a,b));
     return 0;
}

在这里插入图片描述

二、静态库.a文件的生成与使用

1).生成.o文件

gcc -c sub1.c sub2.c main.c

2).生成静态库.a文件

ar crv libafile.a sub1.o sub2.o 

3)使用静态库.a文件,创建可执行程序

gcc -o main main.c libsub.a
./main

在这里插入图片描述
在这里插入图片描述

三、共享库.so文件的生成与使用

1).生成.o目标文件(此处生成.o 文件必须添加"-fpic"(小模式,代码少),否则在生成.so 文件时会出错)

gcc -c -fpic sub1.c sub2.c

2).生成共享库.so 文件

gcc -shared *.o -o libsub.so

3).使用.so 库文件,创建可执行程序

gcc -o main main.c libsub.so
sudo cp libsub.so /usr/lib
./main

可以看见.so文件比.a文件大。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值