Chapter2 C与C++——2.3 编译原理

本文详细解析了编译型语言的编译与链接过程,解释了目标文件与库文件的作用,对比了静态库、共享库和动态库的特点,并提供了一个实践案例。

2.3 编译原理

很多人误以为编译是一个过程,实际上,编译一个 C/C++ 程序分为编译和链接两个过程。

2.3.1 编译与连接

编译型语言的源码是不能被直接执行的,只有满足特定处理器架构要求的机器码才能被 CPU 执行。将程序源码转变成机器码的过程称为编译,这个过程会生成扩展名为“.o”的目标文件。

通常,一个编译后的程序仍然是不能独立执行的,人们还引入了静态链接库、动态链接库、共享库等,程序需要依赖于这些库才能运行。更多的时候则是依赖于,来自于同一项目的其他源码文件所对应的目标文件。

  • 程序A
    • 目标文件1.o <- 源码1.cpp
    • 目标文件2.o <- 源码2.c
    • B.dll
    • C.dll
    • D.dll

一旦程序编译分为了两个步骤,我们就要区分在编译和链接过程中产生的问题,如果能定位到编译错误或者链接错误,将帮助我们缩小问题的范围。例如:在编译过程中,找不到某个符号的定义,那么很有可能是忘记了引用相关的头文件,或是忘记了声明;而如果是在链接过程中找不到某符号,则有可能是忘记告诉编译器要链接哪些额外的库了。

2.3.2 链接库

本文不打算更深入的讲解编译和链接的原理,但是静态库、动态库、共享库等内容确实值得进行一些介绍。

库程序的存在是有特殊意义的。首先,库程序极大的简化了开发程序的复杂度——你可以直接使用某些已经实现的功能,而不必亲自去编写它;其实,那些广泛使用的库程序,他们通常经过了严格的测试,和大量的验证,某些 bug 早已被发掘并修复,因此,库程序要比自己编写的相同功能的程序更稳定可靠;最后,库程序极大的减少了系统中程序的重复率,哪些经常要被很多程序使用到的功能,被封装到一个共享库中,这减少了程序所占的存储空间。

2.3.3 静态库、共享库和动态库

库可以有三种使用的形式:静态、共享和动态。

静态库的代码在编译和链接时就已复制到程序中,其执行不依赖于库文件的存在,执行效率高,但是生成的程序体积大;

共享库并没有被编译和链接到程序中,而是在程序运行时才载入,在编译时,只是简单地指定需要使用的库函数,程序的运行依赖于共享库,但其生成的程序体积相对较小;

动态库是共享库的另一种变化形式。动态库同样在程序运行时载入,但与共享库不同的是,库函数不是在程序运行开始就加载,而是在程序中的语句需要使用该函数时才载入,在程序执行完库函数后释放动态库,腾出内存空间供其它程序使用。动态库不仅优化了程序的存储空间,也优化了程序运行时所需的内存空间,但是其执行效率没有静态库高,并且程序的执行同样依赖于库文件。

练习

将个位数的加减乘除运算编写成动态库,每个库函数的输入是类似于"3+9=“这样的字符串。在另一个程序中调用这些库函数,记录并判断用户输入的合法性,将用户输入传递给库函数,得到库函数返回的结果后,调用输出程序将结果打印出来。

在进行上题过程中,如果没有 include 库对应的头文件或链接对应的库文件会报什么样的错误?

内容概要:本文围绕“考虑电动汽车聚合可调节能力的含波动性电源电氢耦合系统多目标优化运行”展开研究,提出了一种基于Matlab代码实现的多目标优化模型。该模型深度融合电-氢耦合系统高比例波动性可再生能源(如风电、光伏),充分挖掘电动汽车(EV)集群作为移动储能单元的灵活调节潜力,通过聚合调控提升系统对新能源的消纳能力运行经济性。研究系统构建了电动汽车可调度能力、电解水制氢储氢动态过程、多能源协同互补的优化调度框架,并结合智能优化算法实现经济性、低碳性运行稳定性等多重目标的协同优化。文中配套提供了完整的Matlab仿真代码、相关数据及可能的论文支撑材料,极大地方便了模型的复现、验证后续深化研究。; 适合人群:具备电力系统、综合能源系统、优化理论或新能源技术等相关领域基础知识的研究生、科研人员,以及从事新型电力系统规划、清洁能源消纳智慧能源管理的工程技术人员。; 使用场景及目标:①开展高渗透率可再生能源接入下的综合能源系统多目标优化调度研究;②探究电动汽车集群在电网削峰填谷、平抑新能源出力波动及提供辅助服务方面的应用价值潜力;③学习并掌握电氢耦合系统的建模方法、多目标优化求解技术及其在Matlab/Simulink环境下的仿真实现流程。; 阅读建议:此资源不仅提供可运行的代码,更蕴含了前沿的科研思路创新方法,建议读者结合所提供的代码、数据可能的论文文档,系统性地学习从问题建模、算法设计到仿真分析的完整科研过程,并重点关注其中关于需求侧资源聚合、多能互补协同绿色低碳运行的核心理念。
内容概要:本文档名为《经济学期刊论文复现:数字化转型能促进企业的高质量发展吗》,表面上聚焦于经济学领域中数字化转型对企业高质量发展影响的研究,实则是一份涵盖多学科交叉的科研仿真代码资源合集。资源以Matlab、Simulink、Python为主要工具,系统整合了电力系统仿真、微电网优化调度、路径规划、信号处理、图像处理、机器学习预测模型等方向的可复现算法仿真模型。尽管标题指向经济学实证分析,但内容重心在于提供顶级期刊论文的复现代码,如企业全要素生产率(TFP)测算方法(OL、FE、LP、OP、GMM)、风光储氢系统优化、需求响应综合能源系统调度等,并融合智能优化算法深度学习技术进行数据建模预测分析,体现出极强的工程化科研实用性。; 适合人群:具备一定编程基础,熟练掌握Matlab/Simulink/Python等仿真工具,从事工程仿真、经济实证研究或交叉学科科研工作的研究生、高校教师及科研人员。; 使用场景及目标:① 复现经济学顶刊论文中的计量经济模型,深入探究数字化转型对企业全要素生产率的影响机制;② 借助提供的代码资源开展电力系统故障仿真、微电网优化、多能系统调度等科研项目的算法验证仿真分析;③ 应用机器学习深度学习模型完成负荷预测、风电光伏出力预测、电池健康状态评估等典型实证任务; 阅读建议:此资源虽冠以经济学论文之名,实质为多领域高价值仿真代码集成,建议读者依据自身研究方向筛选适配内容,优先关注“顶刊复现”“论文复现”类项目,结合配套数据代码进行实证推演,并通过公众号“荔枝科研社”获取完整资料持续技术支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lionchan187

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值