智能助手网
标签聚合 环境

/tag/环境

linux.do · 2026-04-18 19:53:39+08:00 · tech

介绍:一个能基于vmware自动创建实验环境,检测代码执行结果的Linux教学平台。 初衷 六七年运维运维老人了,深知linux学习过程过于枯燥,因此想着做一个教程实验一体的一个小软件。网络上教程和实际操作大多数是分离的,环境不一,资料不全,关键步骤是否执行成功也无法得知,导致进展不下去。 很多伙伴不是没有学习的动力,是学习前的准备工作太多了,就像一个学习炒菜的人,如果需要出门买菜、砍价、洗菜,浪费太多的时间在前置工作上,做这个软件的目的,是让你先把时间花在炒菜上面,前置步骤可以后面慢慢学。 你需要做什么,把vmware软件安装好,ova文件准备好,导入下实验文件,就可以开始学习了。(说明书都有教程) linux教程方面,属红帽最为知名,因此配套课程以红帽作为编写模板,对其进行必要的补充和修改,学不会就真是我写的有问题了,无AI,放心食用。 核心辅助:针对关键步骤做了检测判断,可以辅助你查看命令是否执行成功。 环境重置:一键重置实验环境,新手要的是先成功,而不是排错。能力不足时,重新开始会更好,排错是等你学会后,再来折腾。 虚拟机资源调度:如果你平日里经常折腾vm,需要创建集群环境之类的,软件也支持自定义资源,直接帮你创建好虚拟机,不需要你手动点开vm,一台台创建操作。 软件介绍 课程导入 软件依赖于实验手册,导入实验手册后就能看得到课程,具体操作在说明中有写。 实验区域 左侧功能菜单,中间实验手册,右侧ssh资源,ssh资源基于vmare自行创建,自动连接实验手册对应的虚拟机资源。 环境重置 环境弄坏了,点击左侧"环境重置即可",基于快照机制,10秒崭新如初。中间实验手册,目前展示的内容基于红帽编写,(累啊)纯手工制作,右侧是实验手册对应的ssh资源。 实验步骤检测 实验手册针对当前必要的步骤进行检测,辅助确认命令有效执行。 未通过: 通过: 实验文件一键导入 如果实验手册绑定文件(任意类型),支持一键导入,避免实验中缺失素材。 资源自定义 除了实验手册定义的资源,可自行定义虚拟机。 在首页中新建课程,课程中新建目录,然后即可创建实验,在实验中,可自行添加实验资源。 假设说你需要弄个集群,可根据个人需要创建虚拟机,只要你本地资源足够就行。 此处演示创建三台虚拟机。 虚拟机管理 可自行管理课程所创建的虚拟机。 其他介绍在说明数中,可前往查看。 软件下载安装 github限制100M的软件,目前暂时放到百度网盘,有其他更好的佬可以告知下。 链接: 百度网盘 请输入提取码 提取码: p8mh 课程资料也在网盘中,一起下载即可。 双击"LabBox-1.0.0-Portable.exe"直接运行,免安装。 1 个帖子 - 1 位参与者 阅读完整话题

www.ithome.com · 2026-04-18 16:43:51+08:00 · tech

IT之家 4 月 18 日消息,据央视、新华社报道,16 万年一遇的彗星 C/2025 R3 抵达近日点,迎来最佳观测期,我国众多天文爱好者也成功观测并拍摄到这位“远赴人间惊鸿客”。 如图所示,今日凌晨,山西阳泉的天文爱好者在盂县牛道岭的暗夜环境下,成功拍摄到了这颗来自太阳系边缘的“信使”的清晰影像。 IT之家查询公开资料获悉,这颗编号为 C/2025 R3 的彗星于 2025 年 9 月由全景巡天望远镜和快速响应系统(Pan-STARRS)首次发现,因此也被称为“泛星彗星”。其轨道周期估算约 16 万至 17 万年,是一颗典型的、极为罕见的长周期彗星。这意味着,它上一次到访地球附近时,还是人类的旧石器时代。 根据天文观测数据,C/2025 R3 彗星将于 4 月 20 日抵达近日点(即轨道上距离太阳最近的点),目前亮度约 4.7 至 5 等。在天气晴朗、光污染较小的黑暗环境下,天文爱好者使用双筒望远镜即可轻松定位,普通人用肉眼在黑暗的背景下也勉强可见。 进入 4 月以来,这颗彗星已成为天文爱好者追逐的焦点。除山西阳泉外,我国新疆乌鲁木齐、河北承德、四川阿坝、内蒙古锡林郭勒等多地均有爱好者成功观测并拍摄到它的身影。 从公布的影像看,该彗星拖着一条长长的彗尾,形态清晰。此次彗星飞掠后将离开太阳系,飞向星际空间。对于北半球的观测者而言,4 月中下旬是观测该彗星的黄金时段,黎明前望向东方低空是最佳观测时机。

linux.do · 2026-04-18 11:51:58+08:00 · tech

先说说使用环境:自己的单个GPT PRO账号------CPA转接(这里主要是为了统一代理,不用每个机器装一个代理)------Axonhub(因为还有其他模型,一起管理)------opencode+OMO 在两台开发机上都发现同样的问题(不同的OC版本,一个1.3.17,一个1.4.8):经常出现如图所示的报错,尤其感觉是写入长文本或者一条回复比较长报错概率会更大,非常影响开发。 我又分析了一下请求,似乎是思考/输出太长,openai先返回了一个空响应,但是在OC侧被错误处理了? 请各位大师帮忙看看! 我逐步审视: Axonhub接收到的相应如下: { id: "resp_0cc95817ee988d150169e25f7278ec8199a1176c6b7dafb37b" model: "gpt-5.4" object: "response" output[ ] status: "in_progress" created_at: 1776443251 } OC显示报错文本如下: Type validation failed: Value: {"error":{"code":"internal_server_error","message":"unexpected EOF","type":""}}. Error message: [ { "code": "invalid_union", "errors": [ [ { "code": "invalid_value", "values": [ "response.output_text.delta" ], "path": [ "type" ], "message": "Invalid input: expected \"response.output_text.delta\"" }, { "expected": "string", "code": "invalid_type", "path": [ "item_id" ], "message": "Invalid input: expected string, received undefined" }, { "expected": "string", "code": "invalid_type", "path": [ "delta" ], "message": "Invalid input: expected string, received undefined" } ], [ { "code": "invalid_value", "values": [ "response.completed", "response.incomplete" ], "path": [ "type" ], "message": "Invalid option: expected one of \"response.completed\"|\"response.incomplete\"" }, { "expected": "object", "code": "invalid_type", "path": [ "response" ], "message": "Invalid input: expected object, received undefined" } ], [ { "code": "invalid_value", "values": [ "response.failed" ], "path": [ "type" ], "message": "Invalid input: expected \"response.failed\"" }, { "expected": "object", "code": "invalid_type", "path": [ "response" ], "message": "Invalid input: expected object, received undefined" } ], [ { "code": "invalid_value", "values": [ "response.created" ], "path": [ "type" ], "message": "Invalid input: expected \"response.created\"" }, { "expected": "object", "code": "invalid_type", "path": [ "response" ], "message": "Invalid input: expected object, received undefined" } ], [ { "code": "invalid_value", "values": [ "response.output_item.added" ], "path": [ "type" ], "message": "Invalid input: expected \"response.output_item.added\"" }, { "expected": "number", "code": "invalid_type", "path": [ "output_index" ], "message": "Invalid input: expected number, received undefined" }, { "code": "invalid_type", "expected": "object", "path": [ "item" ], "message": "Invalid input: expected object, received undefined" } ], [ { "code": "invalid_value", "values": [ "response.output_item.done" ], "path": [ "type" ], "message": "Invalid input: expected \"response.output_item.done\"" }, { "expected": "number", "code": "invalid_type", "path": [ "output_index" ], "message": "Invalid input: expected number, received undefined" }, { "code": "invalid_type", "expected": "object", "path": [ "item" ], "message": "Invalid input: expected object, received undefined" } ], [ { "code": "invalid_value", "values": [ "response.function_call_arguments.delta" ], "path": [ "type" ], "message": "Invalid input: expected \"response.function_call_arguments.delta\"" }, { "expected": "string", "code": "invalid_type", "path": [ "item_id" ], "message": "Invalid input: expected string, received undefined" }, { "expected": "number", "code": "invalid_type", "path": [ "output_index" ], "message": "Invalid input: expected number, received undefined" }, { "expected": "string", "code": "invalid_type", "path": [ "delta" ], "message": "Invalid input: expected string, received undefined" } ], [ { "code": "invalid_value", "values": [ "response.custom_tool_call_input.delta" ], "path": [ "type" ], "message": "Invalid input: expected \"response.custom_tool_call_input.delta\"" }, { "expected": "string", "code": "invalid_type", "path": [ "item_id" ], "message": "Invalid input: expected string, received undefined" }, { "expected": "number", "code": "invalid_type", "path": [ "output_index" ], "message": "Invalid input: expected number, received undefined" }, { "expected": "string", "code": "invalid_type", "path": [ "delta" ], "message": "Invalid input: expected string, received undefined" } ], [ { "code": "invalid_value", "values": [ "response.image_generation_call.partial_image" ], "path": [ "type" ], "message": "Invalid input: expected \"response.image_generation_call.partial_image\"" }, { "expected": "string", "code": "invalid_type", "path": [ "item_id" ], "message": "Invalid input: expected string, received undefined" }, { "expected": "number", "code": "invalid_type", "path": [ "output_index" ], "message": "Invalid input: expected number, received undefined" }, { "expected": "string", "code": "invalid_type", "path": [ "partial_image_b64" ], "message": "Invalid input: expected string, received undefined" } ], [ { "code": "invalid_value", "values": [ "response.code_interpreter_call_code.delta" ], "path": [ "type" ], "message": "Invalid input: expected \"response.code_interpreter_call_code.delta\"" }, { "expected": "string", "code": "invalid_type", "path": [ "item_id" ], "message": "Invalid input: expected string, received undefined" }, { "expected": "number", "code": "invalid_type", "path": [ "output_index" ], "message": "Invalid input: expected number, received undefined" }, { "expected": "string", "code": "invalid_type", "path": [ "delta" ], "message": "Invalid input: expected string, received undefined" } ], [ { "code": "invalid_value", "values": [ "response.code_interpreter_call_code.done" ], "path": [ "type" ], "message": "Invalid input: expected \"response.code_interpreter_call_code.done\"" }, { "expected": "string", "code": "invalid_type", "path": [ "item_id" ], "message": "Invalid input: expected string, received undefined" }, { "expected": "number", "code": "invalid_type", "path": [ "output_index" ], "message": "Invalid input: expected number, received undefined" }, { "expected": "string", "code": "invalid_type", "path": [ "code" ], "message": "Invalid input: expected string, received undefined" } ], [ { "code": "invalid_value", "values": [ "response.output_text.annotation.added" ], "path": [ "type" ], "message": "Invalid input: expected \"response.output_text.annotation.added\"" }, { "code": "invalid_type", "expected": "object", "path": [ "annotation" ], "message": "Invalid input: expected object, received undefined" } ], [ { "code": "invalid_value", "values": [ "response.reasoning_summary_part.added" ], "path": [ "type" ], "message": "Invalid input: expected \"response.reasoning_summary_part.added\"" }, { "expected": "string", "code": "invalid_type", "path": [ "item_id" ], "message": "Invalid input: expected string, received undefined" }, { "expected": "number", "code": "invalid_type", "path": [ "summary_index" ], "message": "Invalid input: expected number, received undefined" } ], [ { "code": "invalid_value", "values": [ "response.reasoning_summary_text.delta" ], "path": [ "type" ], "message": "Invalid input: expected \"response.reasoning_summary_text.delta\"" }, { "expected": "string", "code": "invalid_type", "path": [ "item_id" ], "message": "Invalid input: expected string, received undefined" }, { "expected": "number", "code": "invalid_type", "path": [ "summary_index" ], "message": "Invalid input: expected number, received undefined" }, { "expected": "string", "code": "invalid_type", "path": [ "delta" ], "message": "Invalid input: expected string, received undefined" } ], [ { "code": "invalid_value", "values": [ "response.reasoning_summary_part.done" ], "path": [ "type" ], "message": "Invalid input: expected \"response.reasoning_summary_part.done\"" }, { "expected": "string", "code": "invalid_type", "path": [ "item_id" ], "message": "Invalid input: expected string, received undefined" }, { "expected": "number", "code": "invalid_type", "path": [ "summary_index" ], "message": "Invalid input: expected number, received undefined" } ], [ { "code": "invalid_value", "values": [ "response.apply_patch_call_operation_diff.delta" ], "path": [ "type" ], "message": "Invalid input: expected \"response.apply_patch_call_operation_diff.delta\"" }, { "expected": "string", "code": "invalid_type", "path": [ "item_id" ], "message": "Invalid input: expected string, received undefined" }, { "expected": "number", "code": "invalid_type", "path": [ "output_index" ], "message": "Invalid input: expected number, received undefined" }, { "expected": "string", "code": "invalid_type", "path": [ "delta" ], "message": "Invalid input: expected string, received undefined" } ], [ { "code": "invalid_value", "values": [ "response.apply_patch_call_operation_diff.done" ], "path": [ "type" ], "message": "Invalid input: expected \"response.apply_patch_call_operation_diff.done\"" }, { "expected": "string", "code": "invalid_type", "path": [ "item_id" ], "message": "Invalid input: expected string, received undefined" }, { "expected": "number", "code": "invalid_type", "path": [ "output_index" ], "message": "Invalid input: expected number, received undefined" }, { "expected": "string", "code": "invalid_type", "path": [ "diff" ], "message": "Invalid input: expected string, received undefined" } ], [ { "code": "invalid_value", "values": [ "error" ], "path": [ "type" ], "message": "Invalid input: expected \"error\"" }, { "expected": "number", "code": "invalid_type", "path": [ "sequence_number" ], "message": "Invalid input: expected number, received undefined" } ], [ { "expected": "string", "code": "invalid_type", "path": [ "type" ], "message": "Invalid input: expected string, received undefined" } ] ], "path": [], "message": "Invalid input" } ] 1 个帖子 - 1 位参与者 阅读完整话题

linux.do · 2026-04-18 09:12:35+08:00 · tech

先说下我的环境:win11 安装hermes agent(原生安装非WSL)。配置好飞书后,聊天不到5次,直接挂了 。而且重启也启动不了!! PS C:\Users\User> hermes gateway run ┌─────────────────────────────────────────────────────────┐ │ Hermes Gateway Starting… │ ├─────────────────────────────────────────────────────────┤ │ Messaging platforms + cron scheduler │ │ Press Ctrl+C to stop │ └─────────────────────────────────────────────────────────┘ Traceback (most recent call last): File “”, line 198, in _run_module_as_main File “”, line 88, in run_code File "C:\Users\User\AppData\Local\hermes\hermes-agent\venv\Scripts\hermes.exe_ main .py", line 10, in File “C:\Users\User\AppData\Local\hermes\hermes-agent\hermes_cli\main.py”, line 6546, in main args.func(args) File “C:\Users\User\AppData\Local\hermes\hermes-agent\hermes_cli\main.py”, line 789, in cmd_gateway gateway_command(args) File “C:\Users\User\AppData\Local\hermes\hermes-agent\hermes_cli\gateway.py”, line 2911, in gateway_command run_gateway(verbose, quiet=quiet, replace=replace) File “C:\Users\User\AppData\Local\hermes\hermes-agent\hermes_cli\gateway.py”, line 1631, in run_gateway success = asyncio.run(start_gateway(replace=replace, verbosity=verbosity)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File “C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py”, line 190, in run return runner.run(main) ^^^^^^^^^^^^^^^^ File “C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py”, line 118, in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File “C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py”, line 654, in run_until_complete return future.result() ^^^^^^^^^^^^^^^ File “C:\Users\User\AppData\Local\hermes\hermes-agent\gateway\run.py”, line 9876, in start_gateway existing_pid = get_running_pid() ^^^^^^^^^^^^^^^^^ File “C:\Users\User\AppData\Local\hermes\hermes-agent\gateway\status.py”, line 434, in get_running_pid os.kill(pid, 0) # signal 0 = existence check, no actual signal sent ^^^^^^^^^^^^^^^ OSError: [WinError 11] An attempt was made to load a program with an incorrect format 7 个帖子 - 5 位参与者 阅读完整话题

linux.do · 2026-04-18 01:38:47+08:00 · tech

起因是看到了站内佬友的 https://linux.do/t/topic/1909158 文章,正好前几天不知道为什么去办了招行的万事达卡(雾),想着自己说不定就能成呢。然后开始了三天的试错循环。 第一天想着qq邮箱是不是会被风控,所以去163注册了新的邮箱。(之前没有了解过,事实是甲骨文不差别对待大陆这边吧?邮箱ip账单地址只要是真实的就好)邮箱这里需要注意的点是,在手机/ipad等环境下需要你 提前去登录网页版邮箱 ,之后的激活邮件如果在邮箱app里面打开会有问题。这是第一个注意点。 然后开始准备把自己的地址按照这个文章里面弄成拼音,现在注册成功后来看并没有必要。在看了这篇文章的评论区的 @dzfun 的说法后,以及参考了 准确账单地址获取 后我就除了 省份 那边必填拼音外(比如 Fujian 这样的格式),都是使用中文。这边因为我是 招行的万事达(非信用卡) 我就使用了招行app的 账户证明 功能。获取到了开户时的地址,之后的甲骨文注册时就 直接使用这个地址!!! 整个过程我觉得最重要之一就是你的地址要准确,在使用这个地址之前我都是靠印象写的,用了这个之后我两遍就过了。 最后一个点,当时正好在上早八,用着自己手机连着流量试了一下,abc了,突发奇想是不是流量的ip不够行,正好学校里面有个09年的校园网(ping0看的,不知道有没有关系)转到自己的ipad(非越狱/巨魔环境)(后面我看到oracle authority app有个检测root环境不弹出确认设定,这边提一嘴)的Chrome无痕窗口试了,直接看到了跑道(跑道期间校园网断开弹认证把我吓死了,还以为止步于此,结果连回来后正常,估计是没影响),随后注册成功,过几分钟马上通知邮件发过来了,我可以登录上这个账号了。至此为止注册成功。半小时后我立即就在这个环境下提交升级申请了,然后几个小时后获得批准。至此全过程完结。 总结下,在各位佬友的说明下,甲骨文最重要的应该就是你的地址和你的卡要符合,你的ip要有某种条件?卡的资历应该也不重要(新开一周不到)其他的都不是很重要,最后再次感谢各位佬友以及Oracle大善人,祝大家都能用上4c24g的服务器~ 7 个帖子 - 5 位参与者 阅读完整话题

www.solidot.org · 2026-04-18 00:09:13+08:00 · tech

微软以及成员包括亚马逊、Google 和 Meta 的游说组织 DigitalEurope 被发现成功在欧盟法律中争取到一则保密条款,阻止公众获取数据中心环境影响的相关信息。法律学者认为该保密条款可能违反了欧盟的透明度规定。该保密条款是在 2024 年添加到 EU Energy Efficiency Directive 修订版中。欧盟委员会在 2023 年发布了第一版草案,按程序听取利益攸关者的反馈。2024 年初微软和 DigitalEurope 提出了他们的反馈意见:将数据中心的环境足迹信息列为机密和商业敏感信息。2024 年 3 月欧盟委员会发布终稿时逐字逐句的加入了微软和 DigitalEurope 的意见。

linux.do · 2026-04-17 23:20:27+08:00 · tech

这个agent可以自己写自己,所以应该在启动的时候知道自己从哪启动的,用的哪个gui启动的,这样它才好自己改自己。因此按照GETTING_STARTED部署完GUI后,应该提示它去实现这一点,后续的使用会更流畅。所谓知人者智,自知者明,AI也是如此。 这东西好玩就好玩在你可以根据自己的喜好去改变它,比如按照原始SOP启动web工具真的跟鬼屎一样,又慢又麻烦,各种确认,但是你跑通流程后让它弄个快速拉起的py,并把这个py的存在放入长期记忆和SOP后,就可以一秒拉起。而且它耗token好像还行,VSCODE里的codex最近好像故意磨洋工,一个简单问题一瞬间就烧掉小半圈上下文窗口,这不是搞笑吗?这个东西就挺克制,好像怎么用都到不了10w字符,上下文疯狂裁剪,一轮也就3w-5w字符左右? 1 个帖子 - 1 位参与者 阅读完整话题

linux.do · 2026-04-17 20:31:37+08:00 · tech

nexscan直达链接 浏览器指纹环境真实性检测 | NexScan 书接上回 L站佬们真好,在某社区推广后,我们NexSMS接码平台直接被撸了10000多个实体号码 搞七捻三 各位最近应该经常看到我们抛头露面,我们的产品最近很多都从之前的渠道拉到社区公开运营了 最近这一个月,在各种社区做的推广最多的就是我们的 NexSMS 接码平台。 一开始在 L 站做的反响非常不错,各位佬跟我们提的建议基本都很有建设性,而且也能解决大家需求,还能做些业绩,确实很开心。 于是我以为其他社区也是这样的,就加大了活动力度。。 上周某日,运营老大打开后台,欢呼:“一天做了 10000… 我们的NexSMS接码平台在之前的活动中被某社区羊毛党狂撸10000+号码之后,在对抗撸毛玩家的过程中,我们总结了相当多的指纹检测规则和经验,同时还可以检验我们的Nexbrowser的指纹隔离保护能力 NexBrowser-指纹浏览器公测,隐私安全丝滑快速上手,欢迎佬友们来当创始会员 相对于市面上成熟的指纹浏览器检测平台,我们Nexscan主要解决了一个问题是 “说人话” NexScan 聚焦浏览器环境真实性检测,重点关注浏览器标识一致性、网络链路可信度、渲染层篡改、运行时异常、DNS 解析路径与历史漂移等核心问题。 我们的目标不是只输出一个指纹值,而是帮助使用方理解“网站能看到什么、哪里异常、为什么值得关注”。 简单说下在测什么 目前主要集中在浏览器环境真实性这块,比如: 浏览器标识之间的一致性(UA / 平台 / 特征是否对得上) IP 和 DNS 的解析路径 WebRTC 泄漏情况 Canvas / Audio / WebGL 有没有被改过 一些TLS协议层信号和环境变化 不是单纯生成一个指纹值,而是尽量把这些信息展开,让人能看出来: 网站到底看到了什么 哪些地方看起来不太正常 这些异常有没有必要关注 实测了一些指纹浏览器 这部分是我最近顺手测的,简单说几个比较常见的情况(不点名): 有些环境 UA 和实际渲染特征对不上,一眼就能看出“拼出来的” WebRTC 和 IP 信息存在不一致的情况 Canvas / WebGL 做了处理,但其他地方没跟上,反而更明显 DNS 路径有跳变或者历史不稳定(这个在一些场景下还挺关键) 不代表所有指纹浏览器都有问题,但“完全无痕”的情况其实比想象中少,在claude stripe 眼里,很大概率就是有问题的! NexScan可以简单清晰的告诉你 当前的指纹环境风险有多大,问题出在哪,大概在风控视角里,能打多少分 nexscan直达链接 浏览器指纹环境真实性检测 | NexScan 2 个帖子 - 2 位参与者 阅读完整话题

linux.do · 2026-04-17 20:08:49+08:00 · tech

详述: 环境:wsl,官方脚本安装2.1.112版本,cc-switch接入站内公益站api 背景:折腾了一天半了,所有插件删了重装没用、所有hooks删了重装没用、cc删了重装也没用。让codex和Gemini修了半天没找到原因(codex认为是api的问题,但cc-switch里试验过any的opus也一样是只生成第一个动作的结果就直接中断结束对话。gemini认为是settings里的一些环境变量因为版本更新需要添加新的条目,但加了他说的变量也没用)。 原因:本人有论文写作需求,急需cc辅助。写到一半看到官方changelog的新增功能被蛊惑了,手贱更新了,结果现在用不了了。 以下附带目前的settings: { "respectGitignore": true, "cleanupPeriodDays": 720, "env": { "ANTHROPIC_AUTH_TOKEN": "PROXY_MANAGED", "ANTHROPIC_BASE_URL": "http://127.0.0.1:15721", "ALL_PROXY": "socks5://127.0.0.1:7897", "HTTP_PROXY": "http://127.0.0.1:7897", "HTTPS_PROXY": "http://127.0.0.1:7897", "NO_PROXY": "localhost,127.0.0.1,::1", "http_proxy": "http://127.0.0.1:7897", "all_proxy": "socks5://127.0.0.1:7897", "no_proxy": "localhost,127.0.0.1,::1", "https_proxy": "http://127.0.0.1:7897", "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1", "CLAUDE_CODE_ATTRIBUTION_HEADER": "0", "DISABLE_INSTALLATION_CHECKS": "1", "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1", "DISABLE_AUTOUPDATER": "1", "ENABLE_TOOL_SEARCH": "1" }, "permissions": { "allow": [ "*" ], "defaultMode": "bypassPermissions" }, "model": "opus[1M]", "hooks": { }, "enabledPlugins": { }, "language": "简体中文", "alwaysThinkingEnabled": true, "effortLevel": "high", "autoDreamEnabled": true, "skipDangerousModePermissionPrompt": true } 3 个帖子 - 2 位参与者 阅读完整话题

linux.do · 2026-04-17 17:47:48+08:00 · tech

一。 准备编译环境 我的开发环境是Ubuntu24.04 a. 下载编译器 Arm Developer Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer Download the GNU Embedded Toolchain for ARM, an open-source suite of tools for C, C++, and Assembly programming for 32-bit ARM Cortex-A, ARM Cortex-M and Cortex-R families 如图: b. 添加环境变量 vi /etc/profile 在文件最后添加 export PATH=$PATH:/usr/lib/gcc/gcc-arm-none-eabi-4_9-2014q4/bin 使能环境变量 source /etc/profile 注意:此命令只在当前终端有效,若需要在其它终端中使用,需要重启计算机。 c. 获取FreeRTOS源码并编译 git clone https://github.com/FreeRTOS/FreeRTOS.git --recurse-submodules cd FreeRTOS/FreeRTOS/Demo/CORTEX_MPS2_QEMU_IAR_GCC/build/gcc make 生成的镜像文件 output/RTOSDemo.out 二。启动测试 用下面命令启动虚拟机 qemu-system-arm -machine mps2-an385 -cpu cortex-m3 -kernel output/RTOSDemo.out -monitor none -nographic -serial stdio 三。 代码调试 通过vscode打开这个demo的代码 code /FreeRTOS/FreeRTOS/Demo/CORTEX_MPS2_QEMU_IAR_GCC 在vscode中创建launch.json 和 tasks.json 内容如下图: launch.json的内容如下: { "version": "0.2.0", "configurations": [ { "name": "Launch QEMU RTOSDemo", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/gcc/output/RTOSDemo.out", "cwd": "${workspaceFolder}", "miDebuggerPath": "arm-none-eabi-gdb", "miDebuggerServerAddress": "localhost:1234", "stopAtEntry": false, "preLaunchTask": "Run QEMU" }, ] } tasks.json的内容 如下: { "version": "2.0.0", "tasks": [ { "label": "Build QEMU", "type": "shell", "command": "make --directory=${workspaceFolder}/build/gcc", "problemMatcher": { "base": "$gcc", "fileLocation": ["relative", "${workspaceFolder}/build/gcc"] }, "group": { "kind": "build", "isDefault": true } }, { "label": "Run QEMU", "type": "shell", "command": "echo 'QEMU RTOSdemo started'; qemu-system-arm -machine mps2-an385 -cpu cortex-m3 -kernel ${workspaceFolder}/build/gcc/output/RTOSDemo.out -monitor none -nographic -serial stdio -s -S", "dependsOn": ["Build QEMU"], "isBackground": true, "problemMatcher": [ { "pattern": [ { "regexp": ".", "file": 1, "location": 2, "message": 3 } ], "background": { "activeOnStart": true, "beginsPattern": ".", "endsPattern": "QEMU RTOSdemo started", } } ] } ] } 按F5启动调试 如下图 1 个帖子 - 1 位参与者 阅读完整话题