使用交叉编译编译在OpenWRT上运行的程序
2010-07-18 22:21
906 查看
首先下载OpenWrt-SDK-Linux-i686-1.tar.bz2包,解压缩
tar jxf OpenWrt-SDK-Linux-i686-1.tar.bz2
为了方便,可以做个链接
ln -s /root/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/mipsel-linux-uclibc-gcc /usr/bin/mepsel-gcc
然后使用
/root/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/mipsel-linux-uclibc-gcc
来编译你的程序就可以了,有Make文件的,可以修改Make文件的CC行,使用mepsel-gcc编译。
有人跟我问,说链接的时候可能出错,我编译的都是简单的程序,实际上对于大型源码,需要链接的,请参考网上一个达人的编译办法
Debian 下编译OpenWrt 和使用搭建交叉编译环境(buildroot)
编译OpenWrt后也就有了交叉编译需要的工具链(ToolChain),工具链其实在官方DownLoad是可以直接获取到的.
我们是在虚拟机下做这些的,首先给Debian更新一下sshd以便我们能方便操作。
su -
注销光盘源(vi /etc/apt/sources.list 然后在光盘源前加个#)
apt-get update
apt-get install ssh openssh-server
更新OpenWrt编译环境所需的软件包。
apt-get install build-essential bison flex zlib1g-dev libncurses5-dev subversion quilt intltool ruby fastjar unzip gawk
可以开始了。
cd /usr/src
svn co svn://svn.openwrt.org/openwrt/branches/backfire/
经过一段时间后,从官方SVN仓库获得用于编译最新发行版backfire的脚本。
接下来用普通用户权限来完成吧。
在root权限下先chown 用户 /usr/src/backfire
ctrl + D 退出root
开始下载源码和编译(友情提醒:过程漫长,需要有高速的带宽,建议在睡觉前执行.)
cd backfire
make menuconfig
选择好你要编译的硬件目标和所带的软件,rg100-a aa只要把前几个选项里的bcm 63xx勾上就好了。
make V=99
于是开始了漫长的下载源码和编译过程,一觉醒来再看看吧。
最后你会发现在/usr/src/backfire/生成了一个叫做staging_dir大约99M的文件夹,表明bcm 63xx的OpenWrt和相对工具链已经编译好了。
执行以下命令,进入mips编译环境
(注意,注释掉的可以不用输.要特别注意,涉及的路径和内核一定要对!!不要跟我说编译出来的是X86的,那就是你环境变量都没设对,自己分析一下../staging_dir下的toolchain目录是哪个,不要抄我这个,我这个是RG100A的,且源码路径在/usr/src/backfire...)
export PATH=$PATH:/usr/src/backfire/staging_dir/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin
#export AR=/usr/src/backfire/staging_dir/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin/bin/mips-openwrt-linux-ar
#export AS=/usr/src/backfire/staging_dir/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin/mips-openwrt-linux-as
#export LD=/usr/src/backfire/staging_dir/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin/mips-openwrt-linux-ld
#export NM=/usr/src/backfire/staging_dir/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin/mips-openwrt-linux-nm
export CC=mips-openwrt-linux-gcc
export CPP=mips-openwrt-linux-cpp
export GCC=mips-openwrt-linux-gcc
export CXX=mips-openwrt-linux-g++
export RANLIB=mips-openwrt-linux-uclibc-ranlib
export ac_cv_linux_vers=2.6.32
export LDFLAGS="-static"
export CFLAGS="-Os -s"
复制代码
内核路径在:/usr/src/backfire/build_dir/linux-brcm63xx/linux-2.6.32.27
然后我们开始编译锐捷:
tar -zxf mentohust-0.3.1.tar.gz
cd mentohust-0.3.1
./configure --host=mips-openwrt-linux --disable-encodepass --disable-notify --prefix=/tmp
make
make install
cd /tmp
ls
这就是OpenWrt/backfire用于bcm 63xx版的锐捷,传到rg100-a试试吧,运行之前记得到官网Download下libpcap的ipk在路由上opkg install libpcap*.ipk后,mentohust才能找到网卡。
原文地址 http://bbs.xmlad.com/viewthread.php?tid=521&extra=page%3D1
tar jxf OpenWrt-SDK-Linux-i686-1.tar.bz2
为了方便,可以做个链接
ln -s /root/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/mipsel-linux-uclibc-gcc /usr/bin/mepsel-gcc
然后使用
/root/OpenWrt-SDK-Linux-i686-1/staging_dir_mipsel/bin/mipsel-linux-uclibc-gcc
来编译你的程序就可以了,有Make文件的,可以修改Make文件的CC行,使用mepsel-gcc编译。
有人跟我问,说链接的时候可能出错,我编译的都是简单的程序,实际上对于大型源码,需要链接的,请参考网上一个达人的编译办法
Debian 下编译OpenWrt 和使用搭建交叉编译环境(buildroot) 编译OpenWrt后也就有了交叉编译需要的工具链(ToolChain),工具链其实在官方DownLoad是可以直接获取到的. 我们是在虚拟机下做这些的,首先给Debian更新一下sshd以便我们能方便操作。 su - 注销光盘源(vi /etc/apt/sources.list 然后在光盘源前加个#) apt-get update apt-get install ssh openssh-server 更新OpenWrt编译环境所需的软件包。 apt-get install build-essential bison flex zlib1g-dev libncurses5-dev subversion quilt intltool ruby fastjar unzip gawk 可以开始了。 cd /usr/src svn co svn://svn.openwrt.org/openwrt/branches/backfire/ 经过一段时间后,从官方SVN仓库获得用于编译最新发行版backfire的脚本。 接下来用普通用户权限来完成吧。 在root权限下先chown 用户 /usr/src/backfire ctrl + D 退出root 开始下载源码和编译(友情提醒:过程漫长,需要有高速的带宽,建议在睡觉前执行.) cd backfire make menuconfig 选择好你要编译的硬件目标和所带的软件,rg100-a aa只要把前几个选项里的bcm 63xx勾上就好了。 make V=99 于是开始了漫长的下载源码和编译过程,一觉醒来再看看吧。 最后你会发现在/usr/src/backfire/生成了一个叫做staging_dir大约99M的文件夹,表明bcm 63xx的OpenWrt和相对工具链已经编译好了。 执行以下命令,进入mips编译环境 (注意,注释掉的可以不用输.要特别注意,涉及的路径和内核一定要对!!不要跟我说编译出来的是X86的,那就是你环境变量都没设对,自己分析一下../staging_dir下的toolchain目录是哪个,不要抄我这个,我这个是RG100A的,且源码路径在/usr/src/backfire...) export PATH=$PATH:/usr/src/backfire/staging_dir/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin #export AR=/usr/src/backfire/staging_dir/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin/bin/mips-openwrt-linux-ar #export AS=/usr/src/backfire/staging_dir/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin/mips-openwrt-linux-as #export LD=/usr/src/backfire/staging_dir/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin/mips-openwrt-linux-ld #export NM=/usr/src/backfire/staging_dir/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin/mips-openwrt-linux-nm export CC=mips-openwrt-linux-gcc export CPP=mips-openwrt-linux-cpp export GCC=mips-openwrt-linux-gcc export CXX=mips-openwrt-linux-g++ export RANLIB=mips-openwrt-linux-uclibc-ranlib export ac_cv_linux_vers=2.6.32 export LDFLAGS="-static" export CFLAGS="-Os -s" 复制代码 内核路径在:/usr/src/backfire/build_dir/linux-brcm63xx/linux-2.6.32.27 然后我们开始编译锐捷: tar -zxf mentohust-0.3.1.tar.gz cd mentohust-0.3.1 ./configure --host=mips-openwrt-linux --disable-encodepass --disable-notify --prefix=/tmp make make install cd /tmp ls 这就是OpenWrt/backfire用于bcm 63xx版的锐捷,传到rg100-a试试吧,运行之前记得到官网Download下libpcap的ipk在路由上opkg install libpcap*.ipk后,mentohust才能找到网卡。 |
编译OpenWrt后也就有了交叉编译需要的工具链(ToolChain),工具链其实在官方DownLoad是可以直接获取到的.
我们是在虚拟机下做这些的,首先给Debian更新一下sshd以便我们能方便操作。
su -
注销光盘源(vi /etc/apt/sources.list 然后在光盘源前加个#)
apt-get update
apt-get install ssh openssh-server
更新OpenWrt编译环境所需的软件包。
apt-get install build-essential bison flex zlib1g-dev libncurses5-dev subversion quilt intltool ruby fastjar unzip gawk
可以开始了。
cd /usr/src
svn co svn://svn.openwrt.org/openwrt/branches/backfire/
经过一段时间后,从官方SVN仓库获得用于编译最新发行版backfire的脚本。
接下来用普通用户权限来完成吧。
在root权限下先chown 用户 /usr/src/backfire
ctrl + D 退出root
开始下载源码和编译(友情提醒:过程漫长,需要有高速的带宽,建议在睡觉前执行.)
cd backfire
make menuconfig
选择好你要编译的硬件目标和所带的软件,rg100-a aa只要把前几个选项里的bcm 63xx勾上就好了。
make V=99
于是开始了漫长的下载源码和编译过程,一觉醒来再看看吧。
最后你会发现在/usr/src/backfire/生成了一个叫做staging_dir大约99M的文件夹,表明bcm 63xx的OpenWrt和相对工具链已经编译好了。
执行以下命令,进入mips编译环境
(注意,注释掉的可以不用输.要特别注意,涉及的路径和内核一定要对!!不要跟我说编译出来的是X86的,那就是你环境变量都没设对,自己分析一下../staging_dir下的toolchain目录是哪个,不要抄我这个,我这个是RG100A的,且源码路径在/usr/src/backfire...)
export PATH=$PATH:/usr/src/backfire/staging_dir/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin
#export AR=/usr/src/backfire/staging_dir/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin/bin/mips-openwrt-linux-ar
#export AS=/usr/src/backfire/staging_dir/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin/mips-openwrt-linux-as
#export LD=/usr/src/backfire/staging_dir/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin/mips-openwrt-linux-ld
#export NM=/usr/src/backfire/staging_dir/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin/mips-openwrt-linux-nm
export CC=mips-openwrt-linux-gcc
export CPP=mips-openwrt-linux-cpp
export GCC=mips-openwrt-linux-gcc
export CXX=mips-openwrt-linux-g++
export RANLIB=mips-openwrt-linux-uclibc-ranlib
export ac_cv_linux_vers=2.6.32
export LDFLAGS="-static"
export CFLAGS="-Os -s"
复制代码
内核路径在:/usr/src/backfire/build_dir/linux-brcm63xx/linux-2.6.32.27
然后我们开始编译锐捷:
tar -zxf mentohust-0.3.1.tar.gz
cd mentohust-0.3.1
./configure --host=mips-openwrt-linux --disable-encodepass --disable-notify --prefix=/tmp
make
make install
cd /tmp
ls
这就是OpenWrt/backfire用于bcm 63xx版的锐捷,传到rg100-a试试吧,运行之前记得到官网Download下libpcap的ipk在路由上opkg install libpcap*.ipk后,mentohust才能找到网卡。
原文地址 http://bbs.xmlad.com/viewthread.php?tid=521&extra=page%3D1
相关文章推荐
- Windows 下使用 GNUstep 编译并运行 Objective-C 程序
- 使用libfreenect2库编译运行点云获取程序libfreenect2pclgrabber
- 使用Eclipse编译运行MapReduce程序
- 使用wxWidgets编译的Windows Mobile程序运行时提示“SHCreateMenuBar failed”错误的解决方法
- Windows XP 下使用命令行编译、运行 QT4 程序
- 使用命令行编译打包运行自己的MapReduce程序 Hadoop2.4.1
- Android 运行 C/C++程序 (使用 arm-linux-gcc 交叉编译环境)
- Windows 下使用 GNUstep 编译并运行 Objective-C 程序
- 使用命令行编译运行指定了包的Java程序
- Windows 下使用 GNUstep 编译并运行 Objective-C 程序
- 使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0
- Ubuntu系统下的Hadoop集群(2)_使用命令行编译打包运行自己的MapReduce程序
- CGYWIN 编译的可执行程序在WINDOWS平台中运行时,解决system函数不能使用的问题
- (Ubantu)使用gcc编译一个程序a.c成a.out,输入a.out运行,提示bash:a.out:command not found,怎么回事
- 使用NDK编译并运行C++11的Command line命令行程序
- 使用Sublime Text 2编译运行C/C++程序
- 使用命令行对java程序的编译运行和打包
- 使用Eclipse编译运行MapReduce程序 Hadoop2.6.0_Ubuntu/CentOS
- 使用命令行编译打包运行自己的MapReduce程序 Hadoop2.7.2
- 使用sublime编译运行C程序