- 主题:嵌入式开发、物联网,是用c?还是c++?
话说2M内存和2G内存都可以是嵌入式,情况差别挺大的。
只要编译器没问题,能用c的地方就能用rust,剩下的主要是各种取舍和习惯。
【 在 feng321 的大作中提到: 】
: 你有没有搞过嵌入式啊?哪个嵌入式产品是你开发的?方便截图看看吗?据我调查,我们老板雇人开发的嵌入式产品,用的c啊。连c++都不是。你用rust开发了哪个嵌入式产品呢?给个链接?或者截图看看?
: 【 在 fanjiyouyi 的大作中提到: 】
: : 用rust
: ...................
--
FROM 114.246.238.*
交叉编译是嵌入式基本操作,你什么都不懂没必要用这种语气
【 在 feng321 的大作中提到: 】
: 那编译器呢?c的编译器占多少内存?rust的编译器占多少内存?你开发过什么嵌入式产品?方便截图看看吗?
: 【 在 milksea 的大作中提到: 】
: : 话说2M内存和2G内存都可以是嵌入式,情况差别挺大的。
: ...................
--
FROM 114.254.3.*
没啥c/c++不能做的。
c抽象程度低,c++抽象机制多规则少自由度高,rust抽象能力好又有足够规则限制,然后就是各种取舍。喜欢自由就不适合rust,要限制复杂度rust能帮些忙。
实话说rust写unsafe代码弄指针有那么点臭长,个别语法比如没有 p->a 运算只能 (*p).a 我就不理解,自己没有稳定abi(可以用c abi),做偏底层的部分有时候不适应。但稍稍不那么底层的代码就比c舒服了,no_std 也比 c 强。
我也就在几M内存的linux写过小东西,bsd配工具链就有点费劲,bare metal没玩过。
【 在 horkoson 的大作中提到: 】
: mcu这些跑裸机或者freertos老老实实用C,linux这些用C和cpp都可以。。。
: 请问有是什么业务场景是C/C++搞不定,必须上rust的?
:
: ...................
--
修改:milksea FROM 114.249.220.*
FROM 114.249.220.*
no_std 和裸 c 是一样的;有堆分配器实现个 alloc 还能用容器挺好;有 std 的话 rust 要依赖 c runtime,占用和 c++ 应该相当。
工具链方面,llvm能支持就差不多。rust c book 有一章是支持的目标列表。rtos这种可能是不支持的,bare metal反而有一些支持。
【 在 cyclonev 的大作中提到: 】
: 我猜,他想问的是,同样功能实现,c编译出来的目标文件运行的时候占用多少内存,与rust对应的目标文件的对比。
: 只是没说清楚。以stm32系列,,,可能在各位大佬眼里太low的,,,嵌入式平台来说,内存基本都是几十或者一百来KB的,rust应该不现实吧。
:
: ...................
--
修改:milksea FROM 114.249.220.*
FROM 114.249.220.*
llvm是编译期的,占用有什么夸张的?和gcc差不多啊。
【 在 hgoldfish 的大作中提到: 】
: 我一直没想明白,为啥 llvm 的占用会那么夸张。上百兆。
:
: 【 在 milksea 的大作中提到: 】
: ...................
--
FROM 114.246.238.*
现代编译器大头是中间代码变换,体量是挺大的。不要求代码优化体量就可以小了,tcc才多大点,应该满足你要求。
github tinycc
【 在 hgoldfish 的大作中提到: 】
: 编译期也很烦啊。我一直想弄个纯 c 的编译器,精简一点,最好在 10MB 之内的,能够支持常见的 amd65, arm65, riscv, la65 这几个主流平台即可。好像不存在这种。
:
: 一个破后端,搞出上百兆是为啥没想明白。有这么复杂吗?
: ...................
--
修改:milksea FROM 114.246.238.*
FROM 114.246.238.*
x86 x65 arm arm65 riscv 就还好吧。
【 在 hgoldfish 的大作中提到: 】
: tinyc 没有支持我说的那么多平台吧?
:
: 【 在 milksea 的大作中提到: 】
: ...................
--
FROM 123.119.176.*