在Linux下用buildroot搭建mips/arm的交叉编译平台
在Linux下用buildroot搭建mips/arm的交叉编译平台
这个编译环境是不能编译for开源无线路由器的程序的,因为内核是2.6的
建议参考这篇: http://www.felix021.com/blog/read.php?1467
前两天买了NetGear WRT614 V9,搭载的是Broadcom的200MHz MIPS处理器。
由于使用的是开源操作系统Linux,所以可以刷网上一些NB的固件,比如dd-wrt, tomato, openwrt ...
于是决定把武大校园网的newstar ( felicia修改自superstar修改自mystar ) 集成进去。
想要自己编译newstar,就必须搭建一个交叉编译(cross-compile)平台
也有一种说法是cross compile toochain,交叉编译工具链
反正一个意思:就是能在你现在用的机器上(一般是x86)编译出mips架构的目标代码,很NB。
网上搜了一下,发现有一个好东西阿,它的名字是buildroot
它把制作交叉工具链的整个过程都包干了,你只要选择你想要什么东西就好了
详细介绍和使用见 http://buildroot.uclibc.org/buildroot.html
下面是我的搭建过程:
0. 先安装需要安装的东西
包括: build-essential bison flex ...
# sudo apt-get install build-essential bison flex
1. 下载buildroot
我下载的是最新的版本
http://buildroot.uclibc.org/downloads/snapshots/buildroot-snapshot.tar.bz2
当然你也可以在这里找早期的版本 http://buildroot.uclibc.org/downloads/snapshots/
我把它放在了 /cross 这个目录下面,你可以自己选择,但是下面都以 /cross 为例。
2. 打开terminal,解压buildroot
# su root //然后输入密码
# mkdir /cross
# cd /cross
# mv /{你把它放在哪里了?}/buildroot-snapshot.tar.bz2 ./
# tar jxvf buildroot-snapshot.tar.bz2 //得到 /cross/buildroot 目录
# cd buildroot
3. 配置你需要的东西
# make menuconfig //然后看到了熟悉的界面了吧~~和编译Kernel的一样噢~~
在Target Architecture里面,选择MIPS (当然,你也可以选择ARM,下面还是以MIPS为例 =.=)
在Toolchain里面选上你需要的编译工具,比如g++(编译newstar需要g++),是
[ ] Build/install c++ compiler and libstdc++?
移动到上面,按一下空格,就会变成
[*] Build/install c++ compiler and libstdc++?
全部确定OK以后选择Exit,点击YES,程序会自动生成一个.config文件
p.s. 建议不要加入对jffs2的支持(默认没有),因为我这里出现编译错误,有个函数没
相关文档:
linux内核中最常见的锁是自旋锁(spin lock)。自旋锁最多只能被一个可执行线程持有。如果一个执行线程试图获得一个被争用的自旋锁,那么该线程就会一直进行忙循环等待锁重新可用。要是锁未被争用,请求锁的执行线程便能立刻得到它,继续执行。在任意时间,自旋锁都可以防止多于一个的执行线程同时进入临界区。
......
Linux系统下使用USB转串口连接工业设备 在Windows下可以使用超级终端来连接交换机和路由器等工业设备,而且在Windows下使用usb转串口的线也有相应的驱动,但是如何在Linux下使用呢?
首先要有一个Linux下的终端软件叫minicom如果没有装这个的朋友可以到自己的源中去下载,然后你就要插上你的usb转串口的线,在 ......
LINUX大多发行版默认安装都没有装显卡3D驱动,须手工安装。
ATI 显卡的Linux驱动常见的有两种:ATI catalyst drivers 和 open source RadeonHD drivers。ATI catalyst drivers是官方支持的版本,支持大多数ATI显卡,可以在 http://support.amd.com/us/gpudownload/Pages/index.aspx 选择对应的版本下载。
下面是ATI Catal ......
1、简单测试实例
for i in `find . -type f -name "*.c"`
do
echo $i
basename $i 获取*.c文件名
dirname $i 获取*.c对应的目录名
done
2、实际应用
diff Linux源码,并将有不一样的源码整理在一起,要求:文件 ......