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. 每30秒学会一个Python小技巧,GitHub星数4600+
  2. 老鼠之Atlas之旅(一):Atlas官方站点
  3. php操作session
  4. 计算机网络工程实验分析与体会_《软件工程》面向对象分析实验
  5. VUE 中 使用 iview Form组件 enter键防止页面刷新
  6. Java 开发环境部署
  7. cm201–2刷机短接教程_Jetson TX2 刷机教程(JetPack4.2版本)
  8. oracle数据库等级,[数据库]Oracle数据库建表并用SQL编程分等级
  9. oracle网络加载错误怎么解决,Oracle加载数据库错误解决的方法详细教程
  10. win10双网卡冗余的几种方法
  11. xp计算机保护系统,XP系统总是弹出“Windows文件保护”窗口提示的解决方法
  12. C#.NET开源反编译工具ILSpy下载
  13. 吾爱破解安卓逆向入门教程
  14. python风格logo_十分钟利用Python制作属于你自己的个性logo
  15. ubuntu 关机后自动重启(并没有解决,服了)
  16. 阿里巴巴国际站外贸邮开通的操作步骤
  17. 手机游戏怎么独占世界手游鳌头
  18. 如何进行产品原型设计
  19. opensparc中的crossbar
  20. 基于JSP+Mysql java教师教学质量测评系统

热门文章

  1. 用于处理分数的Objective-C类
  2. 今天你写控件了吗?----ASP.net控件开发系列之(一)开篇
  3. vs2015打开慢的解决方法
  4. 纯CSS的方法解决文字溢出与截断的问题
  5. 【实践】端智能在大众点评搜索推荐重排序的应用实践
  6. 【干货】陆奇:新格局下的创业创新机会.pdf(附下载链接)
  7. 【招聘内推】阿里巴巴广告/推荐/搜索-算法工程师岗位
  8. keras报错ModuleNotFoundError: No module named ‘keras.backend.tensorflow_backend‘;
  9. leetcode力扣647. 回文子串
  10. 计算机视觉目标检测算法总结5——RCNN系列算法