【Linux】C语言动态库和静态库的制作和使用

简介: 【Linux】C语言动态库和静态库的制作和使用

静态库

mylib.c

#include <stdio.h>
void mylib_api(void);
void mylib_api(void)
{
  printf("mylib printf\r\n");
}

main.c

#include <stdio.h>
void mylib_api(void);
int main()
{
  mylib_api();
  return 0;
}

编译静态库

gcc -c mylib.c 
ar cr libmylib.a mylib.o

这里说明一下静态库分为静态库文件名和静态库名

libmylib.c是库文件名

mylib是库名

编译使用静态库的main.c

gcc main.c -lmylib -L ./

-l后面跟的是库名

-L后面跟的是静态库文件的路径这里的静态库文件就在本目录所以直接./

动态库

我们还是采用刚才的两个.c文件,编译动态库

gcc -c -fpic mylib.c
gcc -shared -o libmylib.so mylib.o

编译程序:使用静态库和动态库都是一样的编译方法

gcc main.c -lmylib -L ./ 

到这里我们可运行程序是生成了但是还是无法运行

因为他是属于动态加载的所以他在运行的时候需要找到这个库文件的位置,这里一共有三种方法

  • 1、将.so动态库文件放置在/lib或者/usr/lib文件夹,系统在运行是默认会去这两个文件夹寻找动态库文件

  • 2、export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:这里跟我们动态库的路径;这种方法在commod窗口重启后失效

  • 3、将动态库的存放位置添加到环境变量中在/etc/ld.so.conf文件末添加动态库存放位置,添加完成使用ldconfig刷新生效



相关文章
|
17天前
|
存储 移动开发 C语言
技术心得记录:嵌入式开发中常用到的C语言库函数
技术心得记录:嵌入式开发中常用到的C语言库函数
11 1
|
17天前
|
C语言
C语言的标准库:string.h, math.h, stdlib.h
C语言的标准库:string.h, math.h, stdlib.h
14 1
|
3天前
|
Linux 编译器 vr&ar
【Linux】静态库和动态库
本文详细介绍了Linux系统中静态库和动态库的概念、区别、制作与使用方法,包括它们在链接时的区别、加载机制以及优缺点。
3 0
|
13天前
|
Linux Shell vr&ar
【linux】详解——库
【linux】详解——库
|
17天前
|
Linux 数据处理 vr&ar
Linux下的ranlib命令:静态库文件的索引生成器
`ranlib`是Linux用于加速静态库(.a文件)链接的工具,它生成索引以优化查找目标文件。当链接器处理静态库时,索引能快速定位目标,提升效率。命令如`ranlib libexample.a`创建索引。注意,新工具链可能已自动包含此功能,使用前应确保库文件未含索引,避免重复生成。
|
17天前
|
存储 C语言
C语言标准库介绍:<time.h>
C语言标准库介绍:<time.h>
11 0
|
17天前
|
C语言
C 语言 math.h 库介绍
C 语言 math.h 库介绍
12 0
|
17天前
|
C语言
C 语言 locale.h 库介绍
C 语言 locale.h 库介绍
10 0
|
18天前
|
域名解析 网络协议 程序员
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
22 0
|
19天前
|
域名解析 网络协议 程序员
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
14 0