当前位置: 首页 > wzjs >正文

wordpress jiathisgoogle seo是什么

wordpress jiathis,google seo是什么,邯郸最新工程项目公示,网易游戏官网目录 引言 CangjieMagic 对嵌入式开发板的要求 编译环境准备 本地编译 交叉编译 实战测试 程序编写 对cjpm.toml文件的修改 运行结果 结束语 引言 在人工智能与物联网技术飞速发展的今天,嵌入式系统作为连接物理世界与数字世界的桥梁,承担着越…

目录

引言

CangjieMagic 对嵌入式开发板的要求

编译环境准备

本地编译

交叉编译

实战测试

程序编写

对cjpm.toml文件的修改

运行结果

结束语


引言

在人工智能与物联网技术飞速发展的今天,嵌入式系统作为连接物理世界与数字世界的桥梁,承担着越来越重要的角色。智能体与嵌入式系统紧密相连、相互赋能。智能体为嵌入式系统注入 “智慧”,使其具备自主决策与交互能力;嵌入式系统则为智能体提供运行载体,二者结合极大拓展了应用边界。

CangjieMagic 智能体框架凭借其高效、灵活的特点,成为众多开发者在嵌入式场景下实现智能应用的有力工具。本文将以树莓派 4B 为硬件平台,带领大家深入体验 CangjieMagic 智能体框架在嵌入式系统中的实战应用。

CangjieMagic 对嵌入式开发板的要求

CangjieMagic 智能体框架是基于仓颉编程语言构建的 LLM Agent 开发框架,其主要特点包括:Agent DSL、支持 MCP 协议,支持模块化调用,支持任务智能规划。Cangjie Agent DSL 是一个用于定义和管理 Agent 的专用语言。它允许开发人员通过结构化的系统提示词、工具和各类协作策略来增强 Agent 的功能。

目前CangjieMagic 主要还是在x86、鸿蒙、苹果电脑等几个平台进行开发和测试,开发者缺少对嵌入式开发板的测试。由于Cangjie的runtime没有开源,且只支持x86_64的Linux和Windows,以及AARCH64的Linux和鸿蒙,以及MacOS这几个平台,所以目前还无法在RISC-V平台上运行。本文主要讨论AARCH64的Linux平台,这个也是目前在嵌入式开发板中最多的平台之一。

Cangjie编译器主要支持Ubuntu 18.0以上版本,所以其支持的AARCH64的GCC编译器是7.5以上版本,GLIBC是2.27。所以开发板的系统不应低于这个标准,比如我测试了米尔的TH507开发板,由于其自带镜像的GLIBC是2.25,除非升级镜像中的库文件,否则没法运行Cangjie的代码。测试中还发现,Cangjie编译器cjc对Ubuntu的AARCH64的GCC比较友好,而一些第三方的编译器可能不能很好适配。

我的测试基于树莓派 4B,这是一款性能强劲、功能丰富且价格亲民的单板计算机,配备四核 64 位 ARM Cortex-A72 处理器、最高 8GB 内存,支持千兆以太网、USB 3.0、双频 Wi-Fi 等多种接口。它的优点是镜像不断更新升级,所以适配CangjieMagic要容易些。

编译环境准备

本地编译

Cangjie是可以在树莓派4B上实现本地编译的。需要先从仓颉语言的网站上下载SDK:下载中心-仓颉编程语言官网。在其中选择AARCH64版本的编译器。

下载后解压安装包,然后运行evsetup脚本设置环境变量。

source cangjie/envsetup.sh

先编写了一个简单的 “Hello World” 仓颉程序,存放在名为 “hello_world” 的目录下,源文件为 “hello.cj”。

// hello.cj
main() {println("你好,仓颉")
}

然后使用下面的命令生成可执行文件main:

cjc hello.cj

 编译完成后,会生成可执行文件main。直接运行这个文件,就可以打印"你好,仓颉",这就说明当前的开发板是支持仓颉语言的。

 CangjieMagic也是可以本地编译的,但是并不建议这么做,因为CangjieMagic太复杂了,本地编译会非常慢,也可能会因为内存不够崩溃,所以还是建议交叉编译CangjieMagic。

交叉编译

首先需要再x86_64的Ubuntu中安装AARCH64的编译器:

sudo apt install gcc-aarch64-linux-gnu

然后需要拷贝aarch64开发包中以下三个目录的文件到x86_64的Linux软件包的对应目录:

  • cangjie/runtime/lib/linux_aarch64_llvm/
  • cangjie/modules/linux_aarch64_llvm/
  • cangjie/lib/linux_aarch64_llvm/

交叉编译Cangjie程序至少需要以下5个文件:

  •  Scrt1.o、crti.o和crtn.o文件在/usr/aarch64-linux-gnu/lib/目录下。
  • crtbeginS.o和crtendS.o' '文件在/usr/lib/gcc-cross/aarch64-linux-gnu/11目录下( 路径有可能因为操作系统的不同而不同)。

此时需要使用--toolchain <value>或者-B <value>指定编译工具链中,二进制文件存放的路径。二进制文件包括:编译器、链接器、工具链等提供的 C 运行时目标文件(例如 crt0.o、 crti.o等)。在准备好编译工具链后,可以在将其存放在一个自定义路径,然后通过 --toolchain <value> 向编译器传入该路径,即可让编译器调用到该路径下的二进制文件进行交叉编译。

 可以对前面的hello.cj进行一下交叉编译:

cjc hello.cj --target aarch64-unknown-linux-gnu -B /usr/aarch64-linux-gnu/lib/ -B /usr/lib/gcc-cross/aarch64-linux-gnu/11

编译完成后,会生成可执行文件main。 使用file命令检查一下确实生成了aarch64的文件。 

developer@developer:~/IDEProjects$ file main
main: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, not stripped

实战测试

程序编写

先建立一个demo目录,然后使用下面的命令创建工程:

cjpm init

添加对本项目的依赖,需要修改新建项目的 cjpm.toml

[dependencies]magic = { git = "https://gitcode.com/Cangjie-TPC/CangjieMagic.git", branch = "dev" }

拷贝如下代码至 main.cj 中,并在代码中设置大语言模型服务商的 API key。这里使用的是华为云的DeepSeek服务,有关设置可以参考:在CangjieMagic智能体框架中集成华为云的DeepSeek服务-CSDN博客

package demoimport magic.dsl.*
import magic.prelude.*
import magic.config.Config@agent[model: "deepseek:DeepSeek-R1"]
class BlackCatAssistant {@prompt("你是黑猫警长的助手""当接到群众通知后,你需要唱起黑猫警长的专属 BGM 并安抚群众情绪")
}main() {Config.env["DEEPSEEK_API_KEY"] = "xxxx-s0EOCKOlxbfhJBU_V2KVHw57BBDnRD759eF6didZRS9HD2KhKS36y5s9Q7bMuPRQE0NC6v5bkOdA"Config.env["DEEPSEEK_BASE_URL"] = "https://maas-cn-southwest-2.modelarts-maas.com/v1/infers/8a062fd4-7367-4ab4-a936-5eeb8fb821c4/v1/"let agent = BlackCatAssistant()let result = agent.chat("一只耳来啦")println(result)
}

对cjpm.toml文件的修改

如果直接对工程实施cjpm build,会出现如下错误:

error: conditional compilation have not supported this condition: 'ohos'
==> /home/developer/.cjpm/git/magic/b7cfcb0216ae48e896f16c20592a7c94689fc380/src/log/log_utils_ohos.cj:8:7:
|
8 | @When[ohos == "true"]
| ^
|1 error generated, 1 error printed.

这是因为有几个文件只能在ohos下进行编译,所以修改cjpm.toml文件,设置ohos为false。在文件中加入如下代码(2025年6月3日,官方已经把我的pr合并进去了,所以最新的文件中已经包括了下面这一行,不过仅针对本机编译):

[target.aarch64-unknown-linux-gnu]compile-option = "--cfg \"ohos=false\""

如果是交叉编译,还需要加入-B选项以指定启动文件的位置:

[target.aarch64-unknown-linux-gnu]compile-option = "-B /usr/aarch64-linux-gnu/lib/ -B /usr/lib/gcc-cross/aarch64-linux-gnu/11 --cfg \"ohos=false\""

上面的路径有可能因为操作系统的不同而不同。  

一共有两个cjpm.toml要修改,一个是/home/developer/.cjpm/git/magic/b7cfcb0216ae48e896f16c20592a7c94689fc380目录下的,另一个是demo目录下的。

编译后需要将canjie/runtime目录下aarch64的文件和demo/target目录下的aarch64的文件都打包拷贝到开发板上。

运行结果

使用export LD_LIBRARY_PATH目录设置好所需要的库文件路径,然后运行程序就可以看到结果了。

结束语

智能体和嵌入式系统的结合促进了新技术的融合与创新。随着人工智能算法、机器学习技术的不断发展,智能体可以在嵌入式系统上实现更高级的功能,如基于深度学习的图像识别、自然语言处理等。同时,物联网技术的兴起让嵌入式设备能够连接到网络,智能体可以通过网络获取更多信息,与其他智能体或系统进行交互协作,进一步拓展应用场景。例如,在智慧城市中,分布在各处的嵌入式智能设备(如智能路灯、智能交通信号灯)通过智能体的协同工作,实现资源优化配置和城市管理的智能化。​

目前看,仓颉团队的工作中心不在嵌入式系统方面,所以相关的支持还不是很完善,需要我们自己做一些探索和尝试。

http://www.dtcms.com/wzjs/495842.html

相关文章:

  • 网站建设的功能都需要有哪些百度关键词购买
  • 服务定制网站烟台seo外包
  • 边个网站可以接模具做怎样做好销售和客户交流
  • 网站语音转写怎么做浏览器如何推广自己网站
  • sdk广告接入宁波seo外包服务
  • 深圳华强北手机城深圳关键词seo
  • 专做民宿的网站企业营销策划方案
  • 做网站电话买卖友情链接
  • 这么联系做网站推广百度搜索引擎广告
  • 专门做水产海鲜的网站吗怎么提高关键词搜索权重
  • 做网站需要哪些素材网站推广的一般流程是
  • 公司网站建设比较好的公司广告联盟怎么做
  • 设计一个外贸网站需要多少钱重庆网站建设推广
  • 网站差异网站查询ip地址查询
  • 政府网站建设我想注册一个网站怎么注册
  • 电商网站cms最佳磁力引擎吧
  • 邯郸做网站代理网站seo博客
  • 做seo需要建网站吗游戏代理加盟平台
  • 集团网站建设案例与网站作用网站交易
  • 网站做弹窗广告短视频seo排名加盟
  • 有没有专门做尾料回收的网站代运营网店公司
  • 婚庆大气网站源码关键词seo教程
  • 不花钱做网站百一度一下你就知道
  • 先做网站再付款长沙seo排名外包
  • 在哪家网站做淘宝客最好杭州seo技术培训
  • 长春疫情最新消息今天新增一例广州王牌seo
  • 天河岗顶棠下上社网站建设市场营销公司排名
  • 做网站价钱推广哪个网站好
  • 快递网站推广怎么做百度人工客服电话
  • 毕业设计代做的网站网站seo优化工具