Chinaunix首页 | 论坛 | 博客
  • 博客访问: 884335
  • 博文数量: 286
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1841
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-09 16:26
文章分类

全部博文(286)

文章存档

2016年(38)

2015年(248)

我的朋友

分类: LINUX

2015-05-11 11:43:44

文章地址:
在给OpenWrt挂载了U盘以后,路由器可以放下更多的程序了,是时候为它量身打造一套自己的程序了!

万事开头难,写出第一个HelloWorld也废了不少功夫。

关于OpenWrt的HelloWorld程序,网上有不少文章,但大都是千篇一律,照葫芦画瓢的将一个小小的HelloWorld程序经过层层工序,打包生成OpenWrt的安装包文件,本人使用的Fedora9在这期间出过无数问题,极为繁琐。使写一个HelloWorld成为了浩大的工程,浪费了不少时间。

杀鸡焉用牛刀?

由于本人使用的路由器是D-Link的Dir-825,经过查证,此路由器使用的CPU是ar7161,ar7161是一种RISC指令集的CPU,属于mips构架。所以写个HelloWorld只需要在Linux下搭建一个Mips交叉编译环境就好咯。

闲话少说,现在开始搭建

1:下载

    在  下载buildroot:

    tar -jxvf buildroot-snapshot.tar.bz2
    cd buildroot
2:配置  

    make clean

    make menuconfig

    会出现和编译Linux类似的菜单选择界面,如下图:

    如果出现
    Your display is too small to run Menuconfig!
    It must be at least 19 lines by 80 columns.
    make: *** [menuconfig] 错误 1
    类似的错误,全屏运行虚拟机就好了。

选择第一项“Target Architecture”,改成MIPS(big endian),如下图:

说明:
    little endian是小端模式 如果你的cpu是mipsel架构的,选此项
    big endian是大端模式 mips架构选此项


另外,选择“Toolchain”,将“Kernel Headers”的Linux版本改成你自己主机的Linux版本 如下图




3:编译
    编译时要联网
    输入 make 就开始编译了
    之后就是漫长的等待了。。。
    说明:
    如果在编译过程中出现提示有某个包未安装的错误时,安装好那个包就好了。


4:完成
    

编译完成后,在buildroot文件夹下多了一个output文件夹,其中就是编译好的文件:

cd buildroot/output/host/usr/bin

我们发现了mips的交叉编译工具已经生成啦~~:


为了以后方便使用,我们直接将其中的bin文件夹添加到环境变量中。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

为了方便测试,直接在
/output/host/usr/bin/ 下建立hello.c文件

  1. vim hello.c

  1. #include <stdio.h>
  2. void main()
  3. {
  4.     printf("helloworld!/n");
  5.     return;
  6. }
输入:

  1. ./mips-buildroot-linux-uclibc-gcc hello.c
会发现在当前文件夹下生成了一个名为 a.out 的文件。

将a.out上传到路由器,使用命令
  1. chmod 777 a.out

改变文件权限

运行a.out
  1. ./a.out

可以发现 helloworld 已经出现在屏幕上了!!!

 
 
 
 
 

阅读(2906) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~