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



相关文章
|
安全 Linux vr&ar
Linux的动态库和静态库
Linux的动态库和静态库
|
监控 网络协议 安全
基于标准C语言实现的跨平台Modbus协议库
基于标准C语言实现的跨平台Modbus协议库
|
Linux 编译器 vr&ar
Linux的动态库与静态库
静态库在编译时直接嵌入到最终的可执行文件中。
344 0
|
存储 算法 程序员
C语言:库函数
C语言的库函数是预定义的函数,用于执行常见的编程任务,如输入输出、字符串处理、数学运算等。使用库函数可以简化编程工作,提高开发效率。C标准库提供了丰富的函数,满足各种需求。
ly~
|
数据可视化 BI API
除了 OpenGL,还有哪些常用的图形库可以在 C 语言中使用?
除了OpenGL,C语言中还有多个常用的图形库:SDL,适合初学者,用于2D游戏和多媒体应用;Allegro,高性能,支持2D/3D图形,广泛应用于游戏开发;Cairo,矢量图形库,支持高质量图形输出,适用于数据可视化;SFML,提供简单接口,用于2D/3D游戏及多媒体应用;GTK+,开源窗口工具包,用于创建图形用户界面。这些库各有特色,适用于不同的开发需求。
ly~
4281 4
|
Shell Linux API
C语言在linux环境下执行终端命令
本文介绍了在Linux环境下使用C语言执行终端命令的方法。首先,文章描述了`system()`函数,其可以直接执行shell命令并返回结果。接着介绍了更强大的`popen()`函数,它允许程序与命令行命令交互,并详细说明了如何使用此函数及其配套的`pclose()`函数。此外,还讲解了`fork()`和`exec`系列函数,前者创建新进程,后者替换当前进程执行文件。最后,对比了`system()`与`exec`系列函数的区别,并针对不同场景推荐了合适的函数选择。
|
C语言
C语言中的math库概述
C语言中的math库概述
1328 1
|
Linux C语言 Windows
C语言文件编程-Linux环境下运行
本文介绍了在Linux环境下使用C语言进行文件编程时的两种主要接口:C标准库函数与Linux系统调用。C标准库提供了`fopen`, `fread`, `fwrite`, 和 `fclose`等函数,适用于普通文件操作;而Linux系统调用如`open`, `read`, `write`, 和 `close`则更适合处理设备文件,同时也可用于普通文件。这两种方法的主要区别在于前者使用文件指针,后者使用文件描述符。文章还给出了两个示例程序:一个使用C标准库函数实现文件复制,另一个则使用Linux系统调用完成相同任务。
433 2
|
存储 安全 编译器
深入C语言库:字符与字符串函数模拟实现
深入C语言库:字符与字符串函数模拟实现
393 0
|
存储 Serverless C语言
C语言中的标准库函数
C语言中的标准库函数