gpt4 book ai didi

openwrt - 如何为 OpenWRT 和/或 dd-wrt ​​编写 Hello World

转载 作者:行者123 更新时间:2023-12-02 17:21:34 28 4
gpt4 key购买 nike

我正在运行 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 选择哪种 Broadcom 配置来使用 BCM5352 芯片组来定位我的 WRT54G-V4?

问题 2 - 我上面生成的“HelloWorld”可执行文件是否应该直接从 54G 上的命令行运行,还是必须按照 http://www.gargoyle-router.com/wiki/doku.php?id=openwrt_coding 将其制作为一个包? ?

TIA

最佳答案

您可以按照官方说明进行操作(来自: 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com