码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • linux操作系统中的动静态库(未完)


    1. 静态库与动态库

    • 静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库
    • 动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文件的整个机器码
    • 在可执行文件开始运行以前,外部函数的机器码由操作系统从磁盘上的该动态库中复制到内存中,这个过程称为动态链接(dynamic linking)
    • 动态库可以在多个程序间共享,所以动态链接使得可执行文件更小,节省了磁盘空间。操作系统采用虚拟内存机制允许物理内存中的一份动态库被要用到该库的所有进程共用,节省了内存和磁盘空间。

    2.静态库

    生成静态库

    ar -rc libxxx.a add.o sub.o

    查看静态库中的目录列表

    1. ar -tv libxxx.a
    2. t:列出静态库中的文件
    3. v:verbose 详细信息

     

    链接静态库

    -L 指定库路径 -l 指定库名 测试目标文件生成后,静态库删掉,程序照样可以运行。

    库搜索路径

    • 从左到右搜索-L指定的目录。
    • 由环境变量指定的目录
    • (LIBRARY_PATH) 由系统指定的目录

    • /usr/lib

    • /usr/local/lib

    3. 动态库

    生成动态库

    • shared: 表示生成共享库格式
    • fPIC:产生位置无关码(position independent code)
    • 库名规则:libxxx.so

    使用动态库

    编译选项

    • l:链接动态库,只要库名即可(去掉lib以及版本号)
    • L:链接库所在的路径.

    这里有一个让我疑惑的点

    这里如果不是一步到位

    而是这样使用

    如下形成的两个.gch不能被打包静态库的命令识别 

    通过动态库编译1形成可执行文件

     

  • 相关阅读:
    时间序列预测模型实战案例(十)(个人创新模型)通过堆叠CNN、GRU、LSTM实现多元预测和单元预测
    Java OpenJDK 8u392 Windows x64
    macOS Big Sur(macos11版本)
    Ubuntu server 24 (Linux) 安装部署smartdns 搭建智能DNS服务器
    Java8 新特性之Stream(九)-- Stream的sorted()详细用法
    zynq开发中的文件系统
    《算法系列》之数学
    elasticsearch bulk 批量操作
    java特种兵读书笔记(5-1)——并发之基础介绍
    流式数据处理与高吞吐消息传递:深入探索Kafka技术的奥秘
  • 原文地址:https://blog.csdn.net/m0_74234485/article/details/132631950
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号