FreeFlyOS【二十三】:cmake部分详解

本文详细介绍了在mac_x86_toolchain.cmake和linux_x86_toolchain.cmake中设置不同环境下编译工具链的过程。针对MAC环境,由于系统gcc不支持elf文件系统,使用x86_64-elf-gcc实现跨平台编译。而在Linux环境下,尽管gcc原生支持elf,但为了减少MBR文件大小和避免额外section,同样选择x86_64-elf-gcc。文章还提及了如何创建最小的可执行ELF文件。
摘要由CSDN通过智能技术生成
mac_x86_toolchain.cmake
set(CMAKE_SYSTEM_NAME Darwin)
set(CMAKE_SYSTEM_VERSION 1)
set(CMAKE_SYSTEM_PROCESSOR x86_64)

# GCC
find_program(X86_64 x86_64-elf-gcc REQUIRED)
if (NOT X86_64)
    message(FATAL_ERROR "x86_64-elf-gcc not found.\n"
            "Run `brew install x86_64-elf-gcc` to install the toolchain.")
else ()
    message(STATUS "Found x86_64-elf-gcc ${X86_64}.")
endif ()

set(TOOLCHAIN_PREFIX x86_64-elf-)
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc)
set(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy)

通过.cmake设置不同环境下的编译工具链,mac环境下的工具链如上图所示。

另外说明一下,本人用的是64位的x86机器,如果使用的是32位的机器,那就需要根据情况来设定,看到这里,有很多读者可能会问,MAC电脑下自带gcc版本,为什么要用x86_64-elf-gcc呢,因为MAC电脑下的gcc只支持MAC系统下的文件系统,不认elf文件系统,那我们要写一个类似Linux的内核,肯定要用到它的文件系统,而gcc早就帮我们想到了这一点,所以其提供了跨平台的编译器----x86_64-elf-gcc,这样我们编译链接运行出来的就是el

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值