linux创建静态库和动态库

本文详细介绍如何在C环境中创建和使用静态库及动态库。包括编写源代码、生成目标文件、创建库文件、生成内容表及使用这些库的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2015新年第一篇博客,哈哈,这个2月还没写过博客呢,从现在开始继续!


一、创建静态库

在本例中将创建一个小型静态函数库libfoo,包含两个函数bill()、fred()

1、编辑两个文件bill.c和fred.c

bill.c

#include <stdio.h>

void bill()
{
	printf("bill:we passed\n");
}
fred.c

#include <stdio.h>

void fred()
{
	printf("fred:we passed\n");
}
2、将两个文件生成.o目标文件

gcc -c bill.c fred.c


3、通过.o目标文件生成库文件

ar crv libfoo.a bill.o fred.o


4、为函数库生成一个内容表(当你使用GNU的软件开发工具时,这一步骤不是必须的)

ranlib libfoo.a


5、为libfoo.a库创建对应的头文件foo.h(头文件名最好和库文件一个名,除去lib前缀)

void fred();
void bill();

好了,以上已经创建好库文件libfoo.a和对应的头文件foo.h,现在要使用这个库文件里面的函数。

编写应用程序program.c来调用库文件libfoo.a中的bill函数

#include <stdio.h>
#include "foo.h"

int main()
{
bill();

return 0;
}
编译程序:gcc -o program program.c -I. -L. -lfoo

说明:

-I表示头文件的路径

-L表示库文件的路径

-lfoo表示库文件路径下的库文件



二、创建动态库

1、创建文件test.c和对应的头文件test.h

test.c

#include <stdio.h>

void fun()
{
	printf("you call shared lib\n");
}
test.h

void fun();
2、编译生成动态库文件

gcc -o libtest.so -fpic -shared test.c

生成libtest.so动态库文件,最好库文件名只在源文件名前加lib前缀


现在要去引用这个动态库

program.c

#include <stdio.h>
#include "test.h"

int main()
{
fun();

return 0;
}
编译生成可执行程序program

gcc -o program program.c -I. -L. -ltest

要注意一点是,编译静态库文件的时候要引用静态库文件和对应头文件的位置,


另外在使用program的程序的时候也要指定静态库文件存放的位置。有几种方法:

1)可以直接把*.so文件放在/usr/lib等公共目录下

2)export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/** (保存.so文件的位置)



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luckywang1103

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值