gpt4 book ai didi

gcc - 如何使用 GCC 编译一个独立的环境?

转载 作者:行者123 更新时间:2023-12-03 12:15:32 24 4
gpt4 key购买 nike

我正在处理的代码应该可以为托管和独立环境构建,为后一种情况下的某些 stdlib 函数提供私有(private)实现。

我可以在普通工作站/构建服务器上仅使用 GCC 可靠地测试它吗? Compile for freestanding environment with GCC

  • “-ffreestanding”选项看起来很有希望,但它似乎“仅”禁用内置插件并正确设置 STDC_HOSTED 宏,它仍然提供所有系统头文件。
  • 选项“-nostdinc”过于严格;我仍然想使用独立实现所需的 header (特别是 stddef.h 和 limits.h)。

  • 我在这里想念什么?

    哦,我目前正在使用 GCC 4.4.3,将“很快”升级到 4.5.0。

    最佳答案

    好吧,既然还没有给出答案,我不妨描述一下我是如何完成这项工作的。它非常简单,尽管取决于目标系统,它可能很乏味。

    使用“-nostdinc”意味着将跳过标准系统包含路径;当然,仍然会搜索带有“-I”的其他包含路径以查找标题。

    因此,对于独立构建目标,我创建了一个文件夹“include-freestanding-c89”并在那里链接相关的系统头文件——float.h、iso646.h、limits.h、stdarg.h 和 stddef.h。根据您的平台,其中可能包含其他 header ,因此您可能需要进行一些研究并设置更多链接(因此,如果您需要为多个目标平台执行此操作会很乏味)。

    然后可以将 C89 目录用作“include-freestanding-c99”的基础,要链接的额外头文件是 stdbool.h 和 stdint.h

    然后使用的命令行是

    gcc -std=c89 -nostdinc -nostdlib -ffreestanding -I include-freestanding-c89 

    或者
    gcc -std=c99 -nostdinc -nostdlib -ffreestanding -I include-freestanding-c99

    关于gcc - 如何使用 GCC 编译一个独立的环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2681304/

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