关于Openwrt下的C 编译环境问题

关于Openwrt下的C 编译环境问题,第1张

Openwrt本身不支持直接编译C语言的,不支持GCC,写好的C语言是需要在linux下通过GCC编译器编译出的可执行文件才能跑,例如写好的helloworld.c 需要在linux下gcc -o helloworld helloworld.c 然后会生成一个helloworld文件, ./helloworld 就可以执行了。 不知道题主是这个意思不。。。。

openwrt就好比redhot,ubuntu,fedora等都是linux。所以肯定支持gcc。

如果你要编译编译你自己定义的C/C++程序到你的无线路由器上,如果你的路由器具有烧写的条件,当然是可以往里面烧写的。

首先声明:这是一个很复杂的过程,如果只是偶尔的玩玩,我建议你不要看下边的了。

1. 首先装一个linux虚拟机(redhot,ubuntu,fedora都可以);

2. 然后下载openwrt的bsp源码,根据你的路由器选择合适和架构和板子型号,然后编译生成开发环境;

3. 再然后上openwrt官网上学习如何在bsp中创建一个自己的程序包,从尔编译你自己的c/c++程序。

4. 然后编译生成linux镜像和文件系统,然后再到你的路由器上使用uboot在对应的位置上烧写你生成的文件系统。

5. 然后重启就能运行你写的c/c++程序了。

(当然也可以在编译好了之后通过NFS服务进行运行你的程序。)

最后温馨提示:刷机须谨慎,小心变砖头。

openwrt主要的优势体现在小,它运行的内存最小只要32M,存放FW的最小size只要8M,同时能够满足大多数汇编指令集的需求,所以从硬件成本来说,openwrt *** 作系统可以适应于内存和flash更小的产品上,对于功能相对单一的智能产品,openwrt有它独特的优势。

2. 不仅如此,openwrt支持使用和其他 *** 作系统(Desktop Distributions/android)一样的linux内核,包括对802.11的支持,这也使它在无线开发方面有更多的空间。

3. openwrt使用的C库是uClibc,并不是使用glibc,它是一个面向嵌入式Linux系统的小型的C标准库,uClibc比一般用于Linux发行版的C库GNU C Library (glibc)要小得多,glibc目标是要支持最大范围的硬件和内核平台的所有C标准,而uClibc专注于嵌入式Linux.很多功能可以根据空间需求进行取舍。

4. 在openwrt中,文件系统的启动以及管理和其他几个系统有些不一样,而且在最新的版本中更是使用了集合度比较高的daemon进程进行控制。一般文件系统的启动都是从init进程开始的,从下表中我们可以看到,不同的 *** 作系统,启动的进程不一样,即使是同一种“ *** 作系统”,在新旧版本间的启动方式也不一样,比如openwrt中,将旧版本的bosybox里面的一些功能整合在了procd里面,hotplug2对热插拔事件的监听也又ubox来替代,crond仍然用busybox里面的,ubus是dbus的简化版,简洁的API接口更适用于嵌入式平台。

5. netifd是用来监控和配置网络信息

6. libubox是一些管理工具

7. opkg是openwrt里面安装一些应用程序的工具,就像ubuntu里面的apt-get, 安卓里面的apk

总的来说,运行一个openwrt系统至少需要一个32M内存+8M flash, 它支持linux内核,新版本文件系统的主要管理工具包括procd,ubox,ubus,netifd和opkg.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11128909.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存