gpt4 book ai didi

c++ - C/C++裸机编译和针对特定操作系统(Linux)的编译有什么区别?

转载 作者:IT王子 更新时间:2023-10-29 00:54:56 29 4
gpt4 key购买 nike

假设您有一个为 ARM 架构生成二进制文件的交叉编译工具链。

你的工具链是这样的(在装有 Linux 的 X86_64 机器上运行):

  • arm-linux-gnueabi-gcc.exe:用于 Linux 的交叉编译,在 ARM 上运行。
  • arm-gcc.exe:用于针对 ARM 的裸机交叉编译。

...以及用于在 ARM 上进行交叉编译的大量其他工具。

我感兴趣的点是:

  • (E)二进制文件之间的 ABI 差异(如果有的话)
  • 裸机情况下的限制(例如动态内存分配、C++ 情况下静态构造函数的使用、线程模型等)
  • 两种情况在特定信息(如调试信息支持等)方面的二进制级差异;

最佳答案

  • ABI 差异取决于您调用编译器的方式,例如 GCC 有 -mabi,它可以是 'apcs-gnu'、'atpcs'、'aapcs'、'aapcs- linux' 和 'iwmmxt'。
  • 存在各种运行时功能的裸机限制,因为没有人提供它们。无论是初始化零分配区域还是提供 C++ 功能。如果你能提供它们,它们就会起作用。
  • 二进制级别的差异还取决于您调用编译器的方式。

可以查看GCC ARM options online .

关于c++ - C/C++裸机编译和针对特定操作系统(Linux)的编译有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23008355/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com