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
我们通常把一些公用函数制作成函数库,供其它程序使用.函数库分为 静态库和动态库两种.静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库.动态库在程序编译时并不会被连接到目标代码中,而 ...
最新文章
- 每30秒学会一个Python小技巧,GitHub星数4600+
- 老鼠之Atlas之旅(一):Atlas官方站点
- php操作session
- 计算机网络工程实验分析与体会_《软件工程》面向对象分析实验
- VUE 中 使用 iview Form组件 enter键防止页面刷新
- Java 开发环境部署
- cm201–2刷机短接教程_Jetson TX2 刷机教程(JetPack4.2版本)
- oracle数据库等级,[数据库]Oracle数据库建表并用SQL编程分等级
- oracle网络加载错误怎么解决,Oracle加载数据库错误解决的方法详细教程
- win10双网卡冗余的几种方法
- xp计算机保护系统,XP系统总是弹出“Windows文件保护”窗口提示的解决方法
- C#.NET开源反编译工具ILSpy下载
- 吾爱破解安卓逆向入门教程
- python风格logo_十分钟利用Python制作属于你自己的个性logo
- ubuntu 关机后自动重启(并没有解决,服了)
- 阿里巴巴国际站外贸邮开通的操作步骤
- 手机游戏怎么独占世界手游鳌头
- 如何进行产品原型设计
- opensparc中的crossbar
- 基于JSP+Mysql java教师教学质量测评系统
热门文章
- 用于处理分数的Objective-C类
- 今天你写控件了吗?----ASP.net控件开发系列之(一)开篇
- vs2015打开慢的解决方法
- 纯CSS的方法解决文字溢出与截断的问题
- 【实践】端智能在大众点评搜索推荐重排序的应用实践
- 【干货】陆奇:新格局下的创业创新机会.pdf(附下载链接)
- 【招聘内推】阿里巴巴广告/推荐/搜索-算法工程师岗位
- keras报错ModuleNotFoundError: No module named ‘keras.backend.tensorflow_backend‘;
- leetcode力扣647. 回文子串
- 计算机视觉目标检测算法总结5——RCNN系列算法