Rockchip RK3399Pro datasheet: Symbol versioning with GNU tools i...
需积分: 45 33 浏览量
更新于2024-08-06
收藏 534KB PDF 举报
本文档主要讨论了在嵌入式系统开发中,Rockchip RK3399Pro平台上的版本控制和链接过程,特别是与GNU工具链(如gcc)相关的技术。首先,作者提到了通过执行`nm app.exe | grep getVersion`命令来确认应用程序app.exe链接到的是特定版本的getVersion函数,这里是VER1.0版本。
接着,文档介绍了GNU扩展中的`.symver`指令,这是一种在程序文件(如b.c)中创建带版本号别名符号的方法。通过`.symver old_getVersion,getVersion@VER1.0`和`.symver new_getVersion,getVersion@@VER2.0`,编译器可以在不同版本号下提供同一函数的不同实现。在这个例子中,当默认版本为VER2.0时,链接器会优先选择new_getVersion函数。
链接过程的关键是链接脚本(linker script),在本案例中使用了`.lds`文件。链接脚本负责指定输入section的放置和输出文件的布局,确保版本兼容性。文档中提到的VER1.0和VER2.0版本在脚本中是必需的,因为它们对应着`.symver`指令中引用的版本号。
连接器(linker)默认行为可以通过`ld –verbose`选项查看,而自定义链接行为可以通过`-T`选项指定链接脚本,或者使用其他链接命令进行扩展。链接器区分输入section(如目标文件的section)和输出section(最终可执行文件的section),后者包括loadable和allocatable两种类型,它们在运行时会被映射到进程地址空间,并可能有各自的VMA和LMA地址。
理解这些概念对于开发者来说至关重要,特别是在处理多版本兼容性和性能优化时,能够有效地管理代码的版本依赖以及确保程序在不同平台上正确链接和运行。此外,正确使用`.symver`指令和链接脚本可以帮助开发者在不修改源代码的情况下,实现版本间功能的平滑迁移。
2021-09-30 上传
2020-09-06 上传
2020-03-10 上传
2020-07-25 上传
2021-07-07 上传
2020-07-25 上传
2020-07-25 上传
2015-10-14 上传
2021-09-30 上传
Fesgrome
- 粉丝: 37
- 资源: 3811
最新资源
- Raspberry Pi OpenCL驱动程序安装与QEMU仿真指南
- Apache RocketMQ Go客户端:全面支持与消息处理功能
- WStage平台:无线传感器网络阶段数据交互技术
- 基于Java SpringBoot和微信小程序的ssm智能仓储系统开发
- CorrectMe项目:自动更正与建议API的开发与应用
- IdeaBiz请求处理程序JAVA:自动化API调用与令牌管理
- 墨西哥面包店研讨会:介绍关键业绩指标(KPI)与评估标准
- 2014年Android音乐播放器源码学习分享
- CleverRecyclerView扩展库:滑动效果与特性增强
- 利用Python和SURF特征识别斑点猫图像
- Wurpr开源PHP MySQL包装器:安全易用且高效
- Scratch少儿编程:Kanon妹系闹钟音效素材包
- 食品分享社交应用的开发教程与功能介绍
- Cookies by lfj.io: 浏览数据智能管理与同步工具
- 掌握SSH框架与SpringMVC Hibernate集成教程
- C语言实现FFT算法及互相关性能优化指南