我正在在运行dd-wrt或OpenWRT的Linksys WRT54G-V4上运行Hello World程序。
目前,此路由器正在运行dd-wrt,原因如下。我想将此路由器切换为OpenWRT,因为我无法构建dd-wrt或其工具链。我“假设” OpenWRT工具链应生成将在dd-wrt上运行的可执行二进制文件。
OpenWRT的构建非常简单,因为它具有菜单驱动的make系统。使用这个方便的工具,我构建了一个工具链,该工具链可以从x86 Ubuntu盒交叉编译到MIPS目标。
按照说明,我已经能够构建OpenWRT并为brcm47xx和brcm63xx生成图像。
例如,以下是我的Hello World小程序的成功编译:
jim@ubuntu:~/Desktop/tests$ cat helloC.c
#include <stdio.h>
int main (int argc, char **argv)
{
printf("Hello World\n");
return 0;
}
jim@ubuntu:~/Desktop/tests$
jim@ubuntu:~/Desktop/tests$ mipsel-openwrt-linux-gcc -o HelloWorld helloC.c
jim@ubuntu:~/Desktop/tests$
jim@ubuntu:~/Desktop/tests$ file HelloWorld
HelloWorld: ELF 32-bit LSB executable, MIPS, MIPS32 version 1, dynamically linked (uses shared libs), with unknown capability 0xf41 = 0x756e6700, with unknown capability 0x70100 = 0x3040000, not stripped
jim@ubuntu:~/Desktop/tests$
可悲的是,当我尝试在运行dd-wrt的WRT54G-V4上运行HelloWorld时,出现段错误。
查看维基百科,我发现该路由器使用Broadcom BCM5352。
当我在OpenWRT / trunk目录中运行make menuconfig时,我看不到BCM5352的选项,这就是为什么我不愿意用在brcm47xx或brcm63xx目录中创建的映像之一刷新路由器的原因。我不想猜错并砌路由器。
问题1-我应该使用make menuconfig使用BCM5352芯片组将WRT54G-V4定位到哪种Broadcom配置?
问题2-我上面生成的“ HelloWorld”可执行文件是否应该直接从54G的命令行运行,还是必须按照http://www.gargoyle-router.com/wiki/doku.php?id=openwrt_coding将其打包?
TIA
最佳答案
您可以按照官方的howto(来自:http://www.dd-wrt.com/forum/viewtopic.php?p=21499&sid=de90601a8d51747d1c8ccec29284127d)
1. The helloworld.c source
Code:
#include <stdio.h>
int main ( void ) {
printf( "Hello world!\n" );
}
2. Get and unpack the toolchain in your homedir
Code:
cd ~
wget ftp://ftp.dd-wrt.com/sourcecode/toolchains.x86.debian.sp1.tar.bz2
tar -jxf toolchains.x86.debian.sp1.tar.bz2
3. Add the path to your cross-compiler executable to your path environment variable and compile helloworld.c
Code:
PATH=~/toolchains/4.1.0-uclibc-0.9.28/bin:$PATH mipsel-linux-uclibc-gcc helloworld.c -o helloworld
4. Check if its correctly compiled with the cross-compiler
Code:
file helloworld
helloworld: ELF 32-bit LSB executable, MIPS, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
5. Finally, transfer the helloworld binary file to your router, set the executable bit and run it.
已在Ubuntu 6.06.1 LTS上测试。
关于openwrt - 如何为OpenWRT和/或dd-wrt编写Hello World,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12306165/