嵌入式学习笔记之二(静态链接与动态链接)
要了解静态链接与动态链接,首先要了解什么是静态链接和动态链接,这一部分这里不做讲解,可以去度娘查找。
1.静态链接
静态链接通过静态库进行链接,生成的目标程序中包含运行需要的所有库,可以直接运行,不过就是文件比较大。静态库是汇编产生的.o 文件的集合,一般以.a 文件形式出现。gcc 在使用静态链接的时候需要加上-static 参数。
2。动态链接
动态链接使用动态链接库进行链接,生成的程序在执行的时候需要加载所需要的动态库才能运行,动态链接程序轻便,但必须依赖动态库。Linux 下的动态链接库实际上是共享目标文件,一般是以.so 文件形式存在。GCC 默认是动态链接不需要加参数。
举例子看一下动态链接库的使用方法。使用 gedit 创建三个 C 语言文件,如下。
通过两个变量相加的方式来举例说明
mymath.h
mymath.c
最后来一个测试文件 test.c(在这里需要注意的一个小细节,调用自己写的.h 文件时,必须使用双引号,“xxxx.h”)
然后就可以编译了,因为 test 引用了 mymath.h,所以不能单独编译,gcc test.c mymath.c 一起进行,否则就就会报错。(如下编译正确)
接下来是生成动态链接库的方法,gcc -shared xx -o xxx.so,当我们使用Cat 去进行查看的时候会发现,so 文件里全是乱码,这就是使用动态链接库的一个好处,可以防止核心算法的泄露。
现在就可以秘密将 mymath.c 删除掉了
直接调用库编译发现程序不能运行。
下面将我们自己建立的库移动到 /usr/lib 目录下试试,然后发现代码运行成功。
结束。
嵌入式学习笔记之二(静态链接与动态链接)相关推荐
- 计算机三级嵌入式学习笔记(二)
第二章-嵌入式处理器 考纲与考点分析 嵌入式处理器 嵌入式处理器的结构.特点与分类(不同类型的典型嵌入式处理器及其特点,嵌入式处理器分类): ARM处理器内核的体系结构(工作状态,工作模式,寄存器组织 ...
- 链接mysql_JavaScript学习笔记(二十四)-- MYSQL基础操作
MYSQL mysql 是一个数据库的名字 和 php 合作的比较好的数据库 之前我们说过一个问题,前端向后端索要数据,后端就是去数据库中查询数据,返回给前端 接下来就聊聊使用 php 操作数据库 M ...
- 学习笔记(二)——CSS基础
文章目录 一.什么是CSS 二.CSS基本使用 2.1.行内式(内联样式) 2.2.内部样式 2.3.外部样式 2.3.1.嵌入式 2.3.2.导入式 三.选择器 3.1.基础选择器 3.1.1.标签 ...
- JavaScript 学习笔记(二)
JavaScript 学习笔记(二) 文章目录 JavaScript 学习笔记(二) 一 JSON 1. JSON 对象 什么是JSON对象 JSON对象与Javascript对象的区别 在JavaS ...
- 【vn.py学习笔记(二)】vn.py底层接口 学习笔记
[vn.py学习笔记(二)]vn.py底层接口 学习笔记 1 CTP API的工作原理 1.1 CTP介绍 1.2 API功能介绍 1.3 CTP API文件 1.4 API 通用规则 2 CTP A ...
- Programming C# 学习笔记(二) 出发:“Hello World”
小序: 准备写这章的学习笔记了,啊,Hello World!多么亲切的语句,呵呵,当初学C语言的第一个程序就是输出它, 还记得费了好大劲终于把它输出来时候的那种兴奋感觉,真是让我怀念哦!(然 ...
- opencv学习笔记(二):基于肤色的人手检测
opencv学习笔记(二):基于肤色的人手检测 原文:http://blog.csdn.net/wzmsltw/article/details/50849810 先写了人手的检测程序,下一步基于检测程 ...
- TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅
TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅读 ...
- OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十
OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...
最新文章
- Nginx面试!mysql时间类型以及获取当前时间,干货满满
- 用gcc gvim编译程序
- 复现经典:《统计学习方法》​第16章 主成分分析
- 20155301《信息安全系统设计基础》第六周学习总结
- 第三届全国高校“数据科学与大数据技术”教学研讨会
- php插入方法,有什么办法能把一条php语句插入到方法里呢?
- Nodejs解压版安装
- mysql gtid dump_MySQL之mysqldump备份的--set-gtid-purged参数
- 组合排列中重复数问题
- 动手学数据分析(五)- 模型建立和评估
- OCTF2016--piapiapia
- 文献检索与SCI、EI、ISTP
- led数码显示控制plc实验_一种LED数码显示的PLC控制程序及方法与流程
- [百度百科]英语状语
- react钩子_使用Web动画API和React钩子创建高性能动画
- Mac升级自带PHP版本(非Homebrew方式)
- 硬件结构框架_北桥_带宽
- 阅读Designing Network Design Spaces(CVPR2020)
- 计算机网络 --- 计算机网络和因特网
- 织梦 简单的会员系统