使用c/c艹开发

来自WRTnode Wiki
跳转至: 导航搜索
此页面有未被标记进行翻译的更改

其他语言:
English • ‎中文(中国大陆)‎

硬件

  • 有Linux系统的pc机一台
  • 任何一款WRTnode开发板
  • 5V充电器

软件

搭建环境

列举出不同的Linux系统机搭建编译OpenWrt环境的方法,参考:搭建OpenWrt交叉编译环境
编译OpenWrt,参考:如何编译一个WRTnode的固件

toolchain说明

编译完OpenWrt之后,在$(TOPDIR)/staging_dir可以看到三个文件夹:
Host
target-mipsel_24kec+dsp_uClibc-0.9.33.2
toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2
我们所需要的交叉编译工具就在toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin这个目录下,常用的工具有: mipsel-openwrt-linux-g++ g++编译器
mipsel-openwrt-linux-gcc gcc编译器
mipsel-openwrt-linux-gdb 调试器
mipsel-openwrt-linux-ld 链接器
mipsel-openwrt-linux-as 汇编器
使用方法和linux下对应的工具一样。
以及,如果不愿意自己编译toolchain,就用OpenWrt官方的,完全没问题。

例程

使用mipsel-openwrt-linux-gcc编译helloworld.c

vi helloworld.c
 #include <stdio.h>
 int main(void){
     printf("hello world!\n");
     return 0;
 }

然后使用mipsel-openwrt-linux-gcc编译
可以指定编译器的位置,当然更简单明了的还是设置一个环境变量了。

export STAGING_DIR=$[TOPDIR]/staging_dir/
export PATH=$STAGING_DIR/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin
mipsel-openwrt-linux-gcc helloworld.c -o helloworld

然后把生成的helloworld文件scp到你的WRTnode开发板上,这里我们放在/tmp目录下

/tmp/helloworld

程序输出

hello world!

同样使用mipsel-openwrt-linux-g++编译helloworld.cpp

vi helloworld.cpp
#include <iostream>
using namespace std;

int main() {
	cout << "Hello World!" << endl; 
	return 0;
}
mipsel-openwrt-linux-g++ helloworld.cpp -o helloworld

以上的方式对于编译一个简单的程序是很便捷的。当我们遇到编译参数复杂或者生成文件比较多的情况,我们可以用OpenWrt增加软件包的方法,它让移植软件到OpenWrt的操作变得非常容易。