关于makefile

parjing parjing 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
工程项目:有多个模块组成,每个模块都有相应的.c、.h文件,都有相应的makefile文件,每个模块将

相应的.c生成.O文件,最后生成一个.a库文件:最后有一个应用模块将各个模块的.a文件生成一个执行

目标文件。例如:1、总的模块称APP模块,最后生成执行文件的模块;子模块有N多个;

//App.c
#include "lib1.h"
#include "lib2.h"

void main() {
//test lib1
a = 3;
test1Fun();

//test lib2
test2Fun();
}

2、其中有一个模块称lib1,这个模块有个lib1.c与lib1.h:
//lib1.c:

int a = 0;

void test1Fun() {
int i;
i = 2
}
//lib1.h

extern int a;
extern void test1Fun();

lib1 的makefile 能生成lib1.a文件,在App.c中测试“//test lib1”编译也能通过。无错误

3、有另一个模块lib2,
// lib2.c
#include "lib1.h"

void test2Fun() {
a = 5;
}

//lib2.h

extern void test2Fun();
这时通过相应的makefile可能生成lib2.a,也无出错误,但当在App.c上加上“test lib2”的测试语句

时,这时用make去生成APP模块的执行文件会出错会提示lib2.a(li2.o):Infunction

'test2Fun':test2Fun.c(.text + 0x10):undefined reference to 'a';
项目的文件系统可以看成这样的:
Project
|---App
| |---sourceFiles
| |---App.c
|---lib1
| |---HeadFiles
| |---lib1.h
| |---sourceFiles
| |---lib1.c
| |---build
| |---makefile
|---lib2
| |---HeadFiles
| |---lib2.h
| |---sourceFiles
| |---lib2.c
| |---build
| |---makefile
其中makefile我不是那么熟,是在其它的程序搬过来,它能够将lib1与lib2生成相应的.a文件,lib1\2

两个makeflie文件相似,只是将.c与.h生成相应的.a,而App中的makefile可以包含lib1/2.a与app.c文

件去生成执行目标文件。makefile文件做好了文件路径的包含。
现在是:我在APP中的makefile中只包含lib2.a去测试“test lib1”那段语句时,是没有错的,而包含

lib1/2.a,同时不加测试语句"test lib2",也没有出错,但一加上“test lib2”测试语句就会出错:提

示lib2.a(li2.o):Infunction 'test2Fun':test2Fun.c(.text + 0x10):undefined reference to 'a';
,这是因为lib2的makefile中没有加入lib2.a吗?若是这样为什么单独去make lib2中的makefile时,

为什么没有出错呢。
...全文

相关推荐

高校及科研院所如何利用外部数据完善技术转移转化机制.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

完全复现虚拟同步发电机VSG自适应惯量阻尼控制仿真、根轨迹、调节系数对比(Simulink仿真、Matlab代码实现)

内容概要:本文档围绕“【完全复现】虚拟同步发电机VSG自适应惯量阻尼控制仿真、根轨迹、调节系数对比”这一主题,利用Simulink和Matlab平台,系统性地实现了虚拟同步发电机(VSG)的自适应惯量与阻尼控制策略的建模与仿真。内容涵盖VSG的核心控制原理、系统动态响应特性分析、根轨迹绘制以及在不同调节系数下的性能对比研究,旨在深入剖析关键控制参数对系统稳定性与动态性能的影响机制,为新能源并网系统中提升频率支撑能力和暂态稳定性的控制策略设计提供理论依据和技术支持。; 适合人群:具备扎实的电力系统分析与自动控制理论基础,熟练掌握Matlab/Simulink仿真工具,主要从事新能源发电、微电网运行、电力电子变换器控制或电力系统稳定研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①开展虚拟同步发电机(VSG)的建模与先进控制策略的深入研究;②探究自适应惯量与阻尼控制对改善电网频率响应速度和平抑功率波动的作用机理;③运用根轨迹法进行系统稳定性分析,并指导控制器参数的优化整定;④完成高水平学术论文撰写或科研项目申报所需的仿真复现实验。; 阅读建议:本资源以“完全复现”为核心目标,提供了完整的仿真模型与配套代码。使用者应在深入理解同步发电机转子运动方程、虚拟惯量及阻尼物理意义的基础上,结合电力系统暂态稳定理论,逐步操作并调试仿真模型,尤其需关注不同调节系数变化对系统动态性能指标(如超调量、调节时间)的影响,从而深化对VSG内在控制机制与稳定边界的认知。

天天程序猿

员工满意度数据集(11列,12000 条记录)CSV 合成

详情介绍:该 HR 员工数据集含 12,000 条 ×11 列(满意度、绩效评估、项目数、月均工时、司龄、工伤、福利包、晋升、部门、薪资),无缺失值但无离职标签列,且存在数据质量问题(141 条负绩效评估、144 条负工时、49.4% 异常高工伤率、项目数仅 0/1/2),疑似经过修改或合成,不能直接做经典的员工离职预测,适合做满意度回归、薪资三分类、晋升预测或员工聚类分析,使用前必须清洗异常值并注意数据真实性限制。

神仙别闹

科技服务机构如何通过数据服务增强市场竞争力?.docx

科技服务机构如何通过数据服务增强市场竞争力?

BIZKEEN

基于双向DC-DC变换器的储能电池SOC充电+放电双模式Simulink仿真

内容概要:本文详细介绍了一种基于双向DC-DC变换器的储能电池SOC(荷电状态)充放电双模式Simulink仿真模型,旨在实现储能系统在充电与放电两种工作模式下的智能切换与精确控制。该模型依托Simulink平台搭建,通过检测电池SOC实时值,动态判断并切换充放电模式,有效防止过充与过放,提升电池使用寿命与能量利用效率。系统涵盖双向功率变换、电压电流双闭环控制、模式切换逻辑及保护机制等关键环节,充分体现了电力电子变换与电池管理系统(BMS)的深度融合。该仿真模型适用于微电网、电动汽车及可再生能源系统中的能量管理研究,为优化储能调度策略、提高系统稳定性提供了可靠的技术支撑。; 适合人群:具备一定电力电子技术、自动控制理论及Simulink建模基础,从事新能源、储能系统、电力系统仿真等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究储能电池在不同负载或发电条件下的充放电动态行为;②优化电池管理系统中SOC估算精度与充放电控制策略;③验证双向DC-DC变换器在能量双向流动中的响应特性与控制性能;④为微电网能量调度、电动汽车能量回收、风光储一体化系统等实际应用场景提供仿真验证与设计依据。; 阅读建议:建议结合Simulink仿真环境动手实践,深入理解主电路拓扑、控制环路设计及模式切换逻辑,同时可配合相关文献资料进一步探究PI控制、滞环控制等算法对系统动态性能的影响,以全面提升对储能系统能量管理机制的认知与设计能力。

荔枝科研社
评论 10
收藏 已收藏
分享
返回顶部
parjing
Linux/Unix社区 23,224 成员 74,535 内容