linux动态链接库编译运行方法
来源:互联网 发布:网络剪刀手教程 编辑:程序博客网 时间:2024/05/16 10:35
动态链接库不是linux独有的特性,在windows下面也存在这样的特性。
一般来说,windows下面的动态连接库是以*.dll作为结尾的,而linux下面的动态连接库是以*.so结尾的。
和静态链接库相比,动态连接库可以共享内存资源,这样可以减少内存消耗。
另外,动态连接是需要经过操作系统加载器的帮助才能被普通执行文件发现的,
所以动态连接库可以减少链接的次数。有了这个特点,我们就不难发现为什么很多软件的补丁其实都是以动态库发布的。
那么,在Linux上动态库是怎么生成的呢?
#include "test.h"
int add(int a, int b)
{
return a + b;
}
头文件格式,
#ifndef _TEST_H
#define _TEST_H
int add(int a, int b);
#endif
此时如果我们想要生成动态库,要做的工作其实非常简单,输入gcc -shared -fPIC -o libtest.so test.c即可。回车后输入ls,
我们就可以发现当前目录下面出现了libtest.so文件。
#include <stdio.h>
#include "test.h"
int main()
{
printf("%d\n", add(2, 3));
return 1;
}
在上面的代码当中,我们发现使用到了add函数,那么此时如何才能生成一个执行文件呢?也很简单,输入gcc hello.c -o hello ./libtest.so。
然后输入./hello,此时可以验证一下执行文件运行是否正确。在编写静态库的时候,
我说过静态库是汇编链接到执行文件当中的,而动态库不会。朋友们可以做个小实验,删除libtest.so,
然后输入./hello。此时大家可以看看系统有没有错误返回?
一般来说,windows下面的动态连接库是以*.dll作为结尾的,而linux下面的动态连接库是以*.so结尾的。
和静态链接库相比,动态连接库可以共享内存资源,这样可以减少内存消耗。
另外,动态连接是需要经过操作系统加载器的帮助才能被普通执行文件发现的,
所以动态连接库可以减少链接的次数。有了这个特点,我们就不难发现为什么很多软件的补丁其实都是以动态库发布的。
那么,在Linux上动态库是怎么生成的呢?
#include "test.h"
int add(int a, int b)
{
return a + b;
}
头文件格式,
#ifndef _TEST_H
#define _TEST_H
int add(int a, int b);
#endif
此时如果我们想要生成动态库,要做的工作其实非常简单,输入gcc -shared -fPIC -o libtest.so test.c即可。回车后输入ls,
我们就可以发现当前目录下面出现了libtest.so文件。
#include <stdio.h>
#include "test.h"
int main()
{
printf("%d\n", add(2, 3));
return 1;
}
在上面的代码当中,我们发现使用到了add函数,那么此时如何才能生成一个执行文件呢?也很简单,输入gcc hello.c -o hello ./libtest.so。
然后输入./hello,此时可以验证一下执行文件运行是否正确。在编写静态库的时候,
我说过静态库是汇编链接到执行文件当中的,而动态库不会。朋友们可以做个小实验,删除libtest.so,
然后输入./hello。此时大家可以看看系统有没有错误返回?
0 0
- linux动态链接库编译运行方法
- 【基础知识】linux c 编译链接运行、动态链接库
- linux 动态链接库编译
- linux动态链接库编译
- Linux编译动态链接库
- linux 动态库和静态库编译链接方法
- linux 编译,链接,动态链接库
- Linux 编译静态链接库与动态链接库的方法
- Linux平台gcc编译运行时头文件或动态链接库的查找
- 运行过程中链接动态链接库与编译过程中链接动态库的区别
- 运行过程中链接动态链接库与编译过程中链接动态库的区别
- Linux下编译动态链接库
- Linux下编译动态链接库
- linux动态链接库编译(转载)
- Linux 静态、动态链接库编译
- linux下编译动态链接库
- Linux编译cximage生成动态链接库
- Linux编译动态链接库和使用
- CollapsedTextView可折叠的textview,几行代码就能搞定,非常方便使用
- 推荐系统——入门
- App Transport Security(ATS)学习笔记
- 原型聚类总结
- 字符串-10361 Automatic Poetry
- linux动态链接库编译运行方法
- OpenWrt NFS启动
- 法国Nao机器人在C++开发中如何使用外部库
- unity3d中通过代码实现创建一堵墙的功能
- ElasticSearch 解析机制常见用法库 之 Character Filters常用用法
- View的事件分发机制
- [LeetCode] 23. Merge k Sorted Lists
- Yii2.X ActiveRecord的部分类图
- 数列章节中的考查题型和方法