如何使用clang+llvm+binutils+newlib+gdb搭建交叉编译环境

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用clang+llvm+binutils+newlib+gdb搭建交叉编译环境相关的知识,希望对你有一定的参考价值。

参考技术A

测试环境:Windows8.1 + MSYS2 with Mingw, Clang, LLVM + GNU Tools for ARM Embedded Processor


    首先用用Clang生成LLVM字节码

    clang -emit-llvm --target=arm-none-eabi -mcpu=cortex-m3 -mthumb -mfloat-abi=soft

    注意,需要手动添加GNU Tools for ARM Embedd的头文件

    然后用llc生成汇编代码

    接着,使用GNU Tools for ARM Embedded Processor的汇编器生成可执行文件

    arm-none-eabi-as -mcpu=cortex-m3 -mthumb -mfloat-abi=soft

    二进制文件用GNU Tools for ARM Embedded Processor里的arm-none-eabi-objcopy生成

    一些需要注意的地方是Clang的默认配置可能和目标架构的汇编器不一致。比如arm-none-eabi-as会默认开启short-enums,当直接使用arm-none-eabi-gcc时这不是问题,因为编译器也默认开启了这个选项,但Clang不会,所以需要手动加上-fshort-enums。

本回答被提问者采纳

Visual Studio 2019 LLVM clang 标志

【中文标题】Visual Studio 2019 LLVM clang 标志【英文标题】:Visual Studio 2019 LLVM clang flags 【发布时间】:2020-09-19 23:01:53 【问题描述】:

​您好,我选择了平台工具集 LLVM (clang-cl)

当我构建项目时,Visual Studio 启动 clang-cl.exe,我如何传递 clang 参数(标志)?

【问题讨论】:

【参考方案1】:

这与使用 Visual C++ 编译器手动传递选项的机制相同,因为您可以通过添加到以下“附加选项”中来传递它们: “配置属性”、“C/C++”、“命令行”:

要找出可用的 clang 选项子集,请打开 Visual Studio 2019 命令提示符并键入:clang-cl -?

这将首先列出 Microsoft 兼容性选项(即 VC++ 使用的那些),然后是 Clang 选项。

【讨论】:

以上是关于如何使用clang+llvm+binutils+newlib+gdb搭建交叉编译环境的主要内容,如果未能解决你的问题,请参考以下文章

stm32如何使用llvm+clang编译

如何告诉 clang 我的 LLVM 目标应该使用 16 位“int”?

如何使用 Clang 在 C 程序中嵌入 LLVM 程序集或内在函数?

如何在 Linux 上卸载准确的 LLVM 和 CLANG 版本

如何在 Windows 上使用 MINGW 构建 clang?

如何使 clang 编译为 llvm IR