博客
关于我
程序链接链的是什么?链接器通过什么进行的链接?为什么需要extern “C“?
阅读量:526 次
发布时间:2019-03-08

本文共 820 字,大约阅读时间需要 2 分钟。

链接链的本质:理解被链接器视为关键的目标文件

有时候,我们对编程世界的运行机制知之甚少。当我第一次接触内科研项目时,发现程序链接这一概念异常复杂。目标文件到底是什么?它们如何被链接?为什么会有 extern "C" 这个关键字?这些问题一路萦绕在我的脑海中,直到有一天,在一篇技术博客中找到了答案。

目标文件:编译后未经链接的中间文件目标文件是编译过程中生成的中间文件,类似于.o文件在Linux系统中。它们包含了程序运行所需的机器指令和数据,但尚未与其他文件进行链接。这些文件可以被链接器整合成最终的可执行文件或共享库。通过对目标文件的了解,我明白了它们在编程世界中的重要地位。

链接器的链接接口:符号作为粘合剂链接器通过符号将目标文件进行链接。每个函数和变量都可以看作是一个符号,每个符号都有独特的名字。链接过程就像玩具积木的拼接,符号作为连接剂,确保各种目标文件能够协同工作。在实际操作中,符号被分为局部符号和外部符号。局部符号仅在编译单元内部起作用,而外部符号则可以被其他目标文件引用,这在程序的整体链接中至关重要。

理解 extern "C" 的必要性C语言和C++在符号表达方式上有显著差异。由于 languages-supported 的不同,直接在C++项目中使用C函数可能导致符号冲突。 extern "C" 的引入解决了这一问题。它告知编译器使用C语言的符号表达方式,将C函数与C++整合起来。在实际应用中,许多库函数如 memset 都必须使用 extern "C" 宏声明,以确保与C++项目兼容。

通过对这些知识的理解,我逐渐掌握了链接过程的核心逻辑。这不仅仅是理论上的思考,更是实践中解决问题的关键。每当我在编译器中看到 "undefined symbol" 的错误提示时,总能回想起链接器是如何通过符号将各个目标文件整合在一起的。这让我对编程工具的运行原理有了更深刻的理解,也让我在面对实际编程问题时更加从容。

转载地址:http://lvuiz.baihongyu.com/

你可能感兴趣的文章
python 录音左右声道_Python分离立体声wav压缩文件的左右声道
查看>>
Python 循环异或对文件进行加解密
查看>>
Python开发环境搭建(附VMware安装包及虚拟机环境)
查看>>
python 微信扫码登录_python实现微信第三方网站扫码登录(Django)
查看>>
Python 快速下载依赖
查看>>
python实现非参数统计的Cochran检验 (附完整源码)
查看>>
python 怎么验证是否安装成功 scrapy
查看>>
Python 手写数字识别-1
查看>>
Python实现接口自动化测试库(JSON与Requests)详解
查看>>
Python 手写数字识别-3-sklearn中的几种算法
查看>>
python实现SSIM和MSSSIM计算 (附完整源码)
查看>>
Python 打开文件注意事项
查看>>
python 批量修改文件名_python windows下批量修改文件名
查看>>
Python 抓取网页乱码问题 以及EXCEL乱码
查看>>
python 抓取网页内容
查看>>
python 按照当前日期创建文件
查看>>
Python 接口并发测试详解
查看>>
Python 接口自动化 —— requests框架
查看>>
python 接口自动化数据结构(如列表、字典、元组)
查看>>
Python 接口自动化测试中的深拷贝与浅拷贝~
查看>>