热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

强制动态链接库

我从彼得·范·德·林登(PeterVanDerLinden)的书(《专家C编程:深入C的秘密》)中学到,有一些特定的库是必须进行动态链接的;这些库是哪些,以及为什么要强制它们动态链

我从彼得·范·德·林登(Peter Van Der Linden)的书(《专家C编程:深入C的秘密》)中学到,有一些特定的库是必须进行动态链接的;这些库是哪些,以及为什么要强制它们动态链接?(更具体地讲,在GNU / Linux系统)

解决方法:


Which are these libraries


所有UNIX系统都保证向后兼容;也就是说,在较旧的系统上构建的二进制文件将继续运行并在较新的系统上运行.但是,此保证仅适用于与系统库动态链接的二进制文件.


why they are mandatorily dynamically linked


之所以有此限制,是因为用户级程序通常不直接进行系统调用,而是调用libc包装程序例程.因此,只要系统库也进行了更新,UNIX供应商可以自由地对syscall接口进行不兼容的更改(例如,修复错误).通常,此类更改仅在升级到新的OS版本时发生,例如从Solaris 2.6升级到2.7.

Linux上的画面比我上面描述的还要复杂,因为glibc的一个版本由大约200个独立的二进制文件组成,所有二进制文件必须完全匹配.静态链接一个这样的片段,然后在其他片段不匹配的系统上运行会产生无法预测的结果;在libc中经常崩溃.

摘要:除非您知道自己在做什么并且有充分的理由这样做,否则切勿将UNIX系统库静态链接到可执行文件中.


推荐阅读
  • C语言是计算机科学和编程领域的基石,许多初学者在学习过程中会感到困惑。本文将详细介绍C语言的基本概念、关键语法和实用示例,帮助你快速上手C语言。 ... [详细]
  • 大华股份2013届校园招聘软件算法类试题D卷
    一、填空题(共17题,每题3分,总共51分)1.设有inta5,*b,**c,执行语句c&b,b&a后,**c的值为________答:5 ... [详细]
  • oracle 对硬件环境要求,Oracle 10G数据库软硬件环境的要求 ... [详细]
  • Vulnhub DC3 实战记录与分析
    本文记录了在 Vulnhub DC3 靶机上的渗透测试过程,包括漏洞利用、内核提权等关键步骤,并总结了实战经验和教训。 ... [详细]
  • 本文详细介绍了 #include 头文件的功能,该头文件在 Unix 和 Linux 系统中用于定义文件状态相关的数据结构和函数。 ... [详细]
  • 2019-2020学年 20174325 叶竞蔚 《网络对抗技术》实验六:Metasploit基础应用
    本实验旨在掌握Metasploit框架的基本应用方法,重点学习三种常见的攻击方式及其实施思路。实验内容包括一次主动攻击(如MS08-067)、一次针对浏览器的攻击(如MS11-050)以及一次针对客户端的攻击(如Adobe漏洞利用)。此外,还包括成功应用一个辅助模块。 ... [详细]
  • 深入解析Linux中的slabtop命令
    本文将详细介绍如何在Linux系统中使用slabtop命令,帮助读者更好地理解和监控内核slab缓存的使用情况。通过本文的学习,您将掌握slabtop命令的基本用法及其高级功能。 ... [详细]
  • Linux中tput命令怎么用
    这篇文章主要介绍Linux中tput命令怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux常用命令tput命令将通过ter ... [详细]
  • 本文为初学者提供了一条清晰的学习路线,帮助他们逐步成长为优秀的Web开发人员。通过十个关键步骤,涵盖从基础到高级的各个方面,确保每位学习者都能找到适合自己的学习方向。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 本文详细介绍了Sleep函数的基本概念、使用方法及其背后的实现原理。适合对Sleep函数的使用和实现感兴趣的开发者阅读。通过本文,您将了解如何在不同操作系统中使用Sleep函数,以及其在多线程编程中的重要性。 ... [详细]
  • Ubuntu 14.04 系统安装后网卡名称修改方法
    本文介绍了在安装 Ubuntu 14.04 Server 版本后,如何将默认的网卡名称从非 eth 格式修改为传统的 eth 格式,并提供了详细的步骤和示例。 ... [详细]
  • 本文详细介绍了如何在 CentOS 7 及其衍生发行版(如 Red Hat, Oracle, Scientific Linux 7)上安装和完全卸载 GitLab。包括安装必要的依赖关系、配置防火墙、安装 GitLab 软件包以及常见问题的解决方法。 ... [详细]
  • 学习Linux下使用caffe进行模型训练(三)
    前言不管是训练过程中,查看网络学习的状态,还是训练结束后,使用模型去执行特定任务,都需要一个可被观察的输出呈现在研究者面前,最好是可视化的图形而非冰冷的数字。因此,本次讲的是通过c ... [详细]
author-avatar
t53457078
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有