【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刷新生效



相关文章
|
2天前
|
Linux API C语言
C语言读写BMP文件-EasyBmp【 linux 平台】
**EasyBmp** 是一个49KB的轻量级C++图像处理库,专注于BMP格式,提供简单易用的API。它的特点是小巧、开源、易于理解和高度定制。通过示例代码展示了如何轻松读取、缩放和保存BMP图像。适合需要高效处理BMP图像的开发者。
|
7天前
|
Linux C++
linux C/C++静态库制作
linux C/C++静态库制作
|
7天前
|
C语言
C语言小插曲——对图形库的初步探索(消除小球小游戏)
C语言小插曲——对图形库的初步探索(消除小球小游戏)
6 0
|
7天前
|
Linux vr&ar 开发者
Linux 命令 `ar` 详解:静态库的管理利器
`ar` 命令是 Linux 管理静态库的工具,常用于创建、修改和提取 `.a` 文件。基本语法为 `ar [选项] 目标文件 [成员...]`。常用选项包括:`rcs` 创建(更新)静态库,`t` 列出成员,`x` 提取成员,`d` 删除成员。注意文件顺序、创建索引、备份和跨平台兼容性。学习和掌握 `ar` 命令能提升系统开发效率。
|
7天前
|
C语言
C语言——oj刷题——模拟实现库函数strlen
C语言——oj刷题——模拟实现库函数strlen
|
8天前
|
Linux Shell
IP地址库Linux系统从APNIC获取地址库
IP地址库Linux系统从APNIC获取地址库
|
16天前
|
程序员 C语言
C 语言标准库
C 语言标准库
21 3
|
16天前
|
Web App开发 API C语言
C语言图形界面库的研究与应用
C语言图形界面库的研究与应用
18 1
|
16天前
|
Ubuntu Linux Go
ubuntu linux (20.04) 源码编译cryptopp库 - apt版本过旧
ubuntu linux (20.04) 源码编译cryptopp库 - apt版本过旧
22 1
|
29天前
|
Linux 编译器 Shell
深入理解Linux中的动态库与静态库
深入理解Linux中的动态库与静态库