要了解静态链接与动态链接,首先要了解什么是静态链接和动态链接,这一部分这里不做讲解,可以去度娘查找。

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 目录下试试,然后发现代码运行成功。

结束。

嵌入式学习笔记之二(静态链接与动态链接)相关推荐

  1. 计算机三级嵌入式学习笔记(二)

    第二章-嵌入式处理器 考纲与考点分析 嵌入式处理器 嵌入式处理器的结构.特点与分类(不同类型的典型嵌入式处理器及其特点,嵌入式处理器分类): ARM处理器内核的体系结构(工作状态,工作模式,寄存器组织 ...

  2. 链接mysql_JavaScript学习笔记(二十四)-- MYSQL基础操作

    MYSQL mysql 是一个数据库的名字 和 php 合作的比较好的数据库 之前我们说过一个问题,前端向后端索要数据,后端就是去数据库中查询数据,返回给前端 接下来就聊聊使用 php 操作数据库 M ...

  3. 学习笔记(二)——CSS基础

    文章目录 一.什么是CSS 二.CSS基本使用 2.1.行内式(内联样式) 2.2.内部样式 2.3.外部样式 2.3.1.嵌入式 2.3.2.导入式 三.选择器 3.1.基础选择器 3.1.1.标签 ...

  4. JavaScript 学习笔记(二)

    JavaScript 学习笔记(二) 文章目录 JavaScript 学习笔记(二) 一 JSON 1. JSON 对象 什么是JSON对象 JSON对象与Javascript对象的区别 在JavaS ...

  5. 【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 ...

  6. Programming C# 学习笔记(二) 出发:“Hello World”

    小序:      准备写这章的学习笔记了,啊,Hello World!多么亲切的语句,呵呵,当初学C语言的第一个程序就是输出它, 还记得费了好大劲终于把它输出来时候的那种兴奋感觉,真是让我怀念哦!(然 ...

  7. opencv学习笔记(二):基于肤色的人手检测

    opencv学习笔记(二):基于肤色的人手检测 原文:http://blog.csdn.net/wzmsltw/article/details/50849810 先写了人手的检测程序,下一步基于检测程 ...

  8. TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅

    TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅读 ...

  9. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

最新文章

  1. Nginx面试!mysql时间类型以及获取当前时间,干货满满
  2. 用gcc gvim编译程序
  3. 复现经典:《统计学习方法》​第16章 主成分分析
  4. 20155301《信息安全系统设计基础》第六周学习总结
  5. 第三届全国高校“数据科学与大数据技术”教学研讨会
  6. php插入方法,有什么办法能把一条php语句插入到方法里呢?
  7. Nodejs解压版安装
  8. mysql gtid dump_MySQL之mysqldump备份的--set-gtid-purged参数
  9. 组合排列中重复数问题
  10. 动手学数据分析(五)- 模型建立和评估
  11. OCTF2016--piapiapia
  12. 文献检索与SCI、EI、ISTP
  13. led数码显示控制plc实验_一种LED数码显示的PLC控制程序及方法与流程
  14. [百度百科]英语状语
  15. react钩子_使用Web动画API和React钩子创建高性能动画
  16. Mac升级自带PHP版本(非Homebrew方式)
  17. 硬件结构框架_北桥_带宽
  18. 阅读Designing Network Design Spaces(CVPR2020)
  19. 计算机网络 --- 计算机网络和因特网
  20. 织梦 简单的会员系统

热门文章

  1. python tkinter 布局_python tkinter学习——布局
  2. nginx location配置 - ttlsa教程系列之nginx
  3. Flutter 实现根据环境加载不同配置
  4. 应届前端面试——看这篇就够了(一)
  5. 37_04_awk入门进阶
  6. 一次插拔U盘引发的学案
  7. tar从压缩包里解压出指定文件
  8. Tomcat Server 配置
  9. 【探讨】javascript事件机制底层实现原理
  10. 数据结构实验之链表二:逆序建立链表