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 静态库 共享库 运行库相关推荐

  1. Linux基础——gcc编译、静态库与动态库(共享库)

    Linux基础--gcc编译.静态库与动态库(共享库) https://blog.csdn.net/daidaihema/article/details/80902012 Linux基础--gcc编译 ...

  2. Linux环境下c语言静态链接库和动态链接库创建和使用

    库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀. 面对比一下两者: 静态链接库:当要使用时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功, ...

  3. linux怎么调用静态库,Linux 静态库的创建和使用

    简介 在linux下库分两种:静态库和共享(动态)库.这两种库的主要不同在于连接到程序的过程. 在编译程序时,连接器(ld)负责把程序中不同的模块连接起来,产生最终的可执行文件.静态库就是在这一过程连 ...

  4. Linux 中的动态链接库和静态链接库是干什么的?

    link 什么是库? 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 本质上来说库是一种可执行代码的二进制形 ...

  5. Linux下制作和使用静态库和动态库

    写在前面: ldd + 可执行文件 可以查看可执行文件所依赖的库 概述: Linux操作系统支持的函数库分为静态库和动态库,动态库又称共享库.linux系统有几个重要的目录存放相应的函数库,如/lib ...

  6. linux分文件编程、静态库与动态库

    参考:linux静态库与动态库编程 作者:丶PURSUING 发布时间:2021-02-02 16:51:49 网址:https://blog.csdn.net/weixin_44742824/art ...

  7. Linux下动态库(.so)和静态库(.a)

     linux下有两种库:动态库和静态库(共享库) 二者的不同点在于代码被载入的时刻不同. 静态库的代码在编译过程中已经被载入可执行程序,因此体积比较大. 动态库(共享库)的代码在可执行程序运行时才 ...

  8. Linux下ar指令与静态库转动态库方法

    1.Linux编译相关 1.1 编译 编译单个源文件 例如:main.c gcc main.c -o main ./main 编译多个源文件 例如:hello.h hello.c main.c gcc ...

  9. 【Linux篇】第十一篇——动静态库(动静态库的介绍+动静态库的打包与使用)

    动静态库的基本原理 认识动静态库 动静态库的概念 静态库的打包与使用 静态库的打包 静态库的使用 动态库的打包与使用 动态库的打包 动态库的使用 动静态库的基本原理 动静态库的本质就是可执行程序的&q ...

  10. Linux下用gcc生成静态库和动态库及练习使用OpenCV

    我们通常把一些公用函数制作成函数库,供其它程序使用.函数库分为 静态库和动态库两种.静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库.动态库在程序编译时并不会被连接到目标代码中,而 ...

最新文章

  1. [BZOJ3262]陌上花开
  2. C# 读取Excel中的时间
  3. 用ASM编写一个简单的Windows Shellcode思路总结
  4. POPUP_TO_CONFIRM_WITH_MESSAGE
  5. LINUX ORACLE 启动与关闭
  6. springboot配置日志
  7. C++(STL):33---hash_set、hash_map、hash_multiset、hash_multimap源码剖析
  8. python数据库增删改查_python对数据库mysql的操作(增删改查)
  9. 【SQL】分析函数功能-排序
  10. Photoshop插件-增加细节-脚本开发-PS插件
  11. Android使用TextToSpeech(TTS)实现文字转语音合成播放
  12. 数字信号处理(一)时域采样定理
  13. [Xilinx FPGA] #8 Xilinx Power Estimator[XPE, 功耗估计器]的使用方法
  14. 《德鲁克管理思想精要》读书笔记
  15. CDH问题汇总之——ERROR main:com.cloudera.server.cmf.bootstrap.EntityManagerFactoryBean: Tables have unsuppo
  16. python+selenium安装,自动化测试环境搭建
  17. Unity Shader Lab 模型切线和法线
  18. c语言英文分词,英文分词的算法和原理
  19. 小技巧:absolute 元素的宽度问题
  20. 好看的壁纸网站汇总,总有一款适合你!

热门文章

  1. skyline TerraBuilder(TB)处理不规则范围影像,去除空值,填充高程等(转载)
  2. HttpResponse类
  3. Ehcache详细解读
  4. 自定义 Web 服务器控件
  5. 面试问题(工作动机、个人愿望 )
  6. [项目回顾]基于Annotation与SpringAOP的缓存简单解决方案
  7. plsql登录,tables表为空解决方案
  8. 微软新闻推荐:深度学习与 NLP 的融合, 让 Windows 11“新闻与兴趣”知你所需...
  9. 全民K歌推荐系统架构、算法及后台设计实践
  10. 【报告分享】预见2021-罗兰贝格中国行业趋势报告.pdf(附下载链接)