主要观点:在 64 位 Linux 系统上可运行 32 位遗留应用,AArch64 也支持,构建内核时需启用CONFIG_COMPAT
选项,但 AArch64 需两个 GCC 工具链,运行 64 位内核时虚拟动态共享对象(vDSO)是挑战,64 位内核若未设置CROSS_COMPILE_COMPAT
至 AArch32 交叉编译器则不给 32 位应用提供 vDSO,而用 clang 构建内核时无需设置CROSS_COMPILE_COMPAT
,vDSO 可提供特定系统调用功能而无需切换到内核上下文,如gettimeofday(2)
,忘记设置CROSS_COMPILE_COMPAT
会影响有严格时间要求的应用性能,在 Yocto 中需打补丁以支持CROSS_COMPILE_COMPAT
,可通过多种方式检查程序是否可受益于 vDSO。
关键信息:AArch64 与其他架构的差异,vDSO 的作用及影响,Yocto 中设置CROSS_COMPILE_COMPAT
的方法,检查 vDSO 可用性的方式。
重要细节:不同架构下 GCC 工具链的要求,vDSO 对gettimeofday(2)
系统调用的影响,Yocto 中打补丁的代码示例,检查 vDSO 可用性的代码片段及环境变量。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。