Luatos-lua For MacOSX

news2024/11/25 12:05:17

0x00 缘起

看到Luatos-soc-pc项目能够编译到MacOS平台并且运行,所以尝试编译;可是Apple Clang编译器太过于严格,导致编译不通过。遂换到gcc-11编译通过,虽然其中依旧会报错(宏定义LUA_USE_MACOSX不起作用,导致不支持的头文件被编译而报错),但在xmake中配置工具链以及修改LuatOS源码后,编译通过。本贴特此记录,并存储编译后的工件,以备后用。

0x01 环境

硬件:Macbook Air 2020,Apple Silicon M1, 16 GBRAM

软件:MacOS14.6.1 (23G93) Sonoma,xmake v2.9.4+20240729,Xcode,Homebrew,gcc-11,VScode

0x02 操作

1. 安装gcc-11,使用homebrew,不需要替换全局c编译器(不需要修改~/.bash_profile,通过xmake配置工具链)

2. 拉取LuatOS和luatos-pc两个项目。

3. 在luatos-pc项目中,修改xmake文件,添加一行“set_config("toolchain","gcc-11")”,设置工具链。

4. 此时编译可以试试,但是我会出错。修改LuatOS中的文件,将“luat/models/luat_lib_i2c.c”中的870行的条件编译注释掉,同时保留返回0的函数“l_i2c_scan()”。

注意:编译非虚拟机时,就要放开注释!

5. 可以进行编译了,如以下代码:

xmake clean -a
xmake

xmake将默认识别系统以及CPU架构,所以能够编译成功。

0x03 资源

编译好的资源:https://download.csdn.net/download/u010160146/89636710

0x04 参考资料

1. https://gitee.com/openLuat/LuatOS

2. luatos-soc-pc: LuatOS在Windows/Linux/Mac等PC系统上的适配

3. xmake 工具链

4. xmake 安装

5. mac编译器由默认的clang切换为gcc_mac 安装 gcc 而不是 clang-CSDN博客

6. 将 Mac OS X 系统的 C、C++ 编译器从默认的 Clang 切换到 GCC_ghc mac-CSDN博客

7. 🌟MacOS 切换 Clang 为 GCC_macos clang的别名为gcc-CSDN博客【推荐】

0x05 后记

- Just Do it!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2035527.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux驱动入门实验班——LED驱动(附百问网视频链接)

目录 一、确定引脚编号 二、编写思路 2.1驱动层 2.2应用层 三、源码 四、实现 课程链接 一、确定引脚编号 首先,可以在开发板上执行如下命令查看已经在使用的GPIO状态: cat /sys/kernel/debug/gpio 可以看到每个gpio都有对应的编号,…

岗位信息采集全攻略:两种方法快速获取招聘信息

摘要 本文将揭秘两大实战策略,助你在激烈的人才市场中迅速捕捉前程无忧上的宝贵岗位信息,无论是手动搜索还是利用现代技术手段,都能事半功倍,抢占先机。 正文 一、手动搜索的艺术:精准定位,深度挖掘 1.…

【网络】传输层TCP协议的报头和传输机制

目录 引言 报头和有效载荷 确认应答机制 超时重传机制 排序和去重 连接管理机制 个人主页:东洛的克莱斯韦克-CSDN博客 引言 TCP是传输层协议,全称传输控制协议。TCP报头中有丰富的字段以及协议本身会制定完善的策略来保证网络传输的可靠性。 TCP…

ICM-20948芯片详解(12)

接前一篇文章:ICM-20948芯片详解(11) 六、寄存器详解 2. USER BANK 0寄存器详述 (56)FIFO_EN_1 参考代码: 无。 (57)FIFO_EN_2 ACCEL_FIFO_EN 1 —— 以采样率将ACCEL-XOUT_H、…

haproxy实例

什么是haproxy Haproxy是一款提供高可用性,负载均衡以及基于tcp和http的的应用交付控制器的开源软件。它由法国人威利塔罗使用c语言开发的。它广泛用于管理和路由网络流量,并确保应用程序的高可用性和高性能。 haproxy的功能 提供第4层(TCP层…

vulnhub系列:Hackademic.RTB1

vulnhub系列:Hackademic.RTB1 靶机下载 一、信息收集 nmap 扫描存活,根据 mac 地址寻找 IP nmap 192.168.23.0/24nmap 扫描端口,开放端口:22、80 nmap 192.168.23.143 -p- -Pn -sV -O访问80端口,页面发现 target …

DirectX修复工具解决问题:一步步教你排除常见错误

在日常使用电脑的过程中,许多用户可能会遇到与DirectX相关的问题,特别是在运行大型游戏或图形密集型应用程序时。这种情况下,选择一款合适的DirectX修复工具免费版来解决问题至关重要! 我们将分享六款好用的DirectX修复工具&…

字节Java后端二面也太难了吧...

粉丝投稿,字节二面直接连环问场景题,难以招架,已经准备好市场上常见的场景题了,希望能帮助你! 由于平台篇幅原因,很多内容展示不了,需要这份《java面试宝典》的伙伴们转发文章关注后&#xff…

Linux_Shell变量及运算符-05

一、Shell基础 1.1 什么是shell Shell脚本语言是实现Linux/UNIX系统管理及自W动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应用软件的核心大都涉及Shell脚本的内容。Shell是一种编程语言, 它像其它编程语言如: C, Java, Python等一样也有变量/函数/运算…

MySQL基础练习题38-每位教师所教授的科目种类的数量

目录 题目 准备数据 分析数据 总结 题目 查询每位老师在大学里教授的科目种类的数量。 准备数据 ## 创建库 create database db; use db;## 创建表 Create table If Not Exists Teacher (teacher_id int, subject_id int, dept_id int)## 向表中插入数据 Truncate table…

ALB使用指南|深入探究 lj-lua-stacks:如何生成 Lua 代码级别的火焰图?

前言 ALB(Another Load Balancer)是一款由灵雀云基于 OpenResty 开发的开源Kubernetes(K8s) 网关,拥有多年的生产环境使用经验。Openresty框架高性能的基础上,提供了一系列高级特性,包括多租户支…

JsonUtility和JsonConvert.DeserializeObject

文章目录 JsonUtility 和 JsonConvert在字符串转类型时的不同总结 JsonUtility 和 JsonConvert在字符串转类型时的不同 不同: JsonUtility.FromJson要转的字符串内不能有注释的字符串 但JsonConvert.DeserializeObject要转的字符串里可以有 原因:. Jso…

新品|暴雨发布第四代工作站静安系列-TR1176

极致性能引领未来 暴雨信息推出全新一代工作站——静安系列TR1176,搭载了强劲的第四代处理器,为客户带来前所未有的计算速度与效率。无论是处理大规模数据集、复杂算法还是高负载多任务,都能轻松应对,确保客户的工作流程顺畅无阻…

【随笔】Java 连接操作FTP与SFTP 详细指南

引言 在Java开发中,文件传输协议(FTP)和安全文件传输协议(SFTP)是处理文件传输的两种常见方式。FTP是标准的网络文件传输协议,而SFTP则在FTP基础上增加了安全层(SSH),提…

设计模式 之 —— 组合模式

目录 什么是组合模式? 定义 特点 结构 组合模式(java代码示例) 首先定义接口 定义叶节点(Leaf类) 定义容器节点(Composite类) 测试类: 树形图 运行结果: 组…

CUDA Programming - (1) CUDA简介

1. GPU 简介 处理器一般包含以下几部分:Cache 缓存,ALU 计算单元,Control 控制中心,RAM 内存。 CPU(Central Processing Unit):中央处理器。适合进行逻辑,ALU计算核心较少。适合控…

乒乓球桌上的AI新星:谷歌机器人Agent,是竞技的未来,还是科技的幻想?

在巴黎奥运会乒乓球的激烈角逐中,一个不同寻常的选手悄然登场——谷歌的乒乓球机器人Agent。 这是首个在竞技水平上达到人类标准的AI机器人。 01 AI机器人颠覆初级玩家 Agent不仅能够在正反手之间自如转换,连续进攻,甚至在面对诸如长球、高…

【Qt】QWidegt的enable属性

enabled:描述了一个控件是否处于“可用”状态(相对的概念“禁用”)。 API说明 isEnabled() 获取到控件的可⽤状态 setEnabled 设置控件是否可使⽤. true 表⽰可⽤, false 表⽰禁⽤ 所谓“禁用”指的是该控件不能接收任何用户的输入事件…

localStorage用法

一、localStorage API使用 注意,localStorage 只能存储字符串。 1.1 存储数据 例如,对象存储时,可以使用JSON.stringify 转成字符串; // 假设你有一个对象 const myObject {name: Alice,age: 25, };// 使用 JSON.stringify 将…

解决windows7虚拟机安装不了vmtools问题

安装不了vmtools问题所在: 没打补丁 ​ 打补丁问题 补丁在本地下载之后无法传到win7虚拟机中 补丁获取 补丁链接如下: https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6…