linux运行库,Linux C 静态库 共享库 运行库
1 静态库
main.c
#include
#include
#include "add.h"
int main(int argc, char **argv)
{
int a = atoi(argv[0]);
int b = atoi(argv[1]);
int ans = add(a, b);
printf("%d\n", ans);
return 0;
}
add.c
int add(int a, int b)
{
return a + b;
}
add.h
int add(int, int);
run.sh
#!/bin/bash
#
gcc -c -o add.o add.c
ar -crs libadd.a add.o
gcc -o main main.c -L. -ladd
命令行输入
chmod +x run.sh
./run.sh
./main 3 4
结果为7
2动态库 同样是main.c add.h add.c
run.sh
#!/bin/bash
#
gcc -c -fpic -o add.o add.c
gcc -shared -o libadd.so add.o
gcc -o main main.c -L. -ladd -Wl,-rpath=.
命令行输入
./run.sh
./main 3 5
结果为8
3 运行库
main.c
#include
#include
#include
#include "add.h"
int main(int argc, char **argv)
{
void *lib_handle;
int (*fn)();
char *error;
lib_handle=dlopen(argv[3], RTLD_LAZY);
if (!lib_handle) {
fprintf(stderr, "%s\n", dlerror());
return 1;
}
fn = dlsym(lib_handle, "add");
if ((error=dlerror())!=NULL) {
fprintf(stderr, "%s\n", error);
return 1;
}
int a = atoi(argv[1]);
int b = atoi(argv[2]);
int ans = fn(a, b);
printf("%d\n", ans);
dlclose(lib_handle);
return 0;
}
run.sh
#!/bin/bash
#
gcc -c -fpic -o add.o add.c
gcc -shared -o libadd.so add.o
gcc -o main main.c -ldl -L. -ladd
命令行输入
./main 4 5 ./libadd.so
结果为9
linux运行库,Linux C 静态库 共享库 运行库相关推荐
- Linux基础——gcc编译、静态库与动态库(共享库)
Linux基础--gcc编译.静态库与动态库(共享库) https://blog.csdn.net/daidaihema/article/details/80902012 Linux基础--gcc编译 ...
- Linux环境下c语言静态链接库和动态链接库创建和使用
库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀. 面对比一下两者: 静态链接库:当要使用时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功, ...
- linux怎么调用静态库,Linux 静态库的创建和使用
简介 在linux下库分两种:静态库和共享(动态)库.这两种库的主要不同在于连接到程序的过程. 在编译程序时,连接器(ld)负责把程序中不同的模块连接起来,产生最终的可执行文件.静态库就是在这一过程连 ...
- Linux 中的动态链接库和静态链接库是干什么的?
link 什么是库? 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 本质上来说库是一种可执行代码的二进制形 ...
- Linux下制作和使用静态库和动态库
写在前面: ldd + 可执行文件 可以查看可执行文件所依赖的库 概述: Linux操作系统支持的函数库分为静态库和动态库,动态库又称共享库.linux系统有几个重要的目录存放相应的函数库,如/lib ...
- linux分文件编程、静态库与动态库
参考:linux静态库与动态库编程 作者:丶PURSUING 发布时间:2021-02-02 16:51:49 网址:https://blog.csdn.net/weixin_44742824/art ...
- Linux下动态库(.so)和静态库(.a)
linux下有两种库:动态库和静态库(共享库) 二者的不同点在于代码被载入的时刻不同. 静态库的代码在编译过程中已经被载入可执行程序,因此体积比较大. 动态库(共享库)的代码在可执行程序运行时才 ...
- Linux下ar指令与静态库转动态库方法
1.Linux编译相关 1.1 编译 编译单个源文件 例如:main.c gcc main.c -o main ./main 编译多个源文件 例如:hello.h hello.c main.c gcc ...
- 【Linux篇】第十一篇——动静态库(动静态库的介绍+动静态库的打包与使用)
动静态库的基本原理 认识动静态库 动静态库的概念 静态库的打包与使用 静态库的打包 静态库的使用 动态库的打包与使用 动态库的打包 动态库的使用 动静态库的基本原理 动静态库的本质就是可执行程序的&q ...
- Linux下用gcc生成静态库和动态库及练习使用OpenCV
我们通常把一些公用函数制作成函数库,供其它程序使用.函数库分为 静态库和动态库两种.静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库.动态库在程序编译时并不会被连接到目标代码中,而 ...
最新文章
- [BZOJ3262]陌上花开
- C# 读取Excel中的时间
- 用ASM编写一个简单的Windows Shellcode思路总结
- POPUP_TO_CONFIRM_WITH_MESSAGE
- LINUX ORACLE 启动与关闭
- springboot配置日志
- C++(STL):33---hash_set、hash_map、hash_multiset、hash_multimap源码剖析
- python数据库增删改查_python对数据库mysql的操作(增删改查)
- 【SQL】分析函数功能-排序
- Photoshop插件-增加细节-脚本开发-PS插件
- Android使用TextToSpeech(TTS)实现文字转语音合成播放
- 数字信号处理(一)时域采样定理
- [Xilinx FPGA] #8 Xilinx Power Estimator[XPE, 功耗估计器]的使用方法
- 《德鲁克管理思想精要》读书笔记
- CDH问题汇总之——ERROR main:com.cloudera.server.cmf.bootstrap.EntityManagerFactoryBean: Tables have unsuppo
- python+selenium安装,自动化测试环境搭建
- Unity Shader Lab 模型切线和法线
- c语言英文分词,英文分词的算法和原理
- 小技巧:absolute 元素的宽度问题
- 好看的壁纸网站汇总,总有一款适合你!
热门文章
- skyline TerraBuilder(TB)处理不规则范围影像,去除空值,填充高程等(转载)
- HttpResponse类
- Ehcache详细解读
- 自定义 Web 服务器控件
- 面试问题(工作动机、个人愿望 )
- [项目回顾]基于Annotation与SpringAOP的缓存简单解决方案
- plsql登录,tables表为空解决方案
- 微软新闻推荐:深度学习与 NLP 的融合, 
让 Windows 11“新闻与兴趣”知你所需...
- 全民K歌推荐系统架构、算法及后台设计实践
- 【报告分享】预见2021-罗兰贝格中国行业趋势报告.pdf(附下载链接)