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

商城模板网站模板百度竞价点击工具

商城模板网站模板,百度竞价点击工具,企业微信怎么申请,网站建设氺金手指排名14目录 引言 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/474162.html

相关文章:

  • 揭阳智能模板建站百度怎么投放自己的广告
  • 我做的网站服务器别人没法左键点击下载呢seo分析及优化建议
  • asp.net建网站seo推广教程视频
  • 中国蔬菜网网站建设电话win优化大师
  • 广告制作协议抚州seo排名
  • 渠道策略的四种方式代做seo关键词排名
  • 余姚住房和建设局网站官方网站百度一下
  • 网址查询地址查询站长之家运营怎么做
  • 网站建设中源码编程同样重要网站seo诊断技巧
  • 企业网站后端模板长沙企业网站建设报价
  • 大宗商品b2b网站建设alexa全球网站排名分析
  • 我有网站 怎么做淘宝推广的网络销售怎么干
  • 学校校园网站建设方案如何自己做网络推广
  • 广水做网站百度搜索高级搜索技巧
  • 如何仿制wordpress主题广州seo网站公司
  • 如何注册腾讯企业邮箱专业网站优化排名
  • 免费网站建设排行榜自制网页
  • 南京网页制作百度seo关键词优化软件
  • 济宁网站建设价格百度竞价推广怎么样才有效果
  • 南京行业网站建设排名怎么优化快
  • 自助网站制作学校seo推广培训班
  • 用bootstarp做的网站最近发生的热点新闻事件
  • 长春如何建立一个平台网站利尔化学股票最新消息
  • linux服务器怎么做网站宁波建站模板系统
  • 如何在百度上做自己的网站免费的网络营销方式
  • 做直播网站开发教程长春网站制作系统
  • 鞍山云网站长春网站建设公司
  • 做淘宝类网站的步骤微营销推广软件
  • 网站开发用的是什么语言软文广告示范
  • 短网址生成功能seo基础入门视频教程