4

dd-wrtまたはOpenWRTのいずれかを実行しているLinksysWRT54G-V4でHelloWorldプログラムを実行しています。

現在、このルーターはdd-wrtを実行しています。これは、以下で説明する理由によるものです。dd-wrtまたはそのツールチェーンを構築できなかったため、このルーターをOpenWRTに切り替えたいと思います。私は、OpenWRTツールチェーンがdd-wrtでも実行される実行可能バイナリを生成する必要があると「想定」しています。

OpenWRTは、メニュー方式の優れたmakeシステムを備えているため、構築が非常に簡単でした。この便利なツールを使用して、x86UbuntuボックスからMIPSターゲットにクロスコンパイルするツールチェーンを構築しました。

指示に従って、OpenWRTをビルドし、brcm47xxとbrcm63xxのイメージを作成することができました。

たとえば、これが私の小さなHelloWorldプログラムの正常なコンパイルです。

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を実行しようとすると、セグメンテーション違反が発生します。

ウィキペディアを見ると、このルーターはBroadcomBCM5352を使用していることがわかります。

OpenWRT /trunkディレクトリでmakemenuconfigを実行すると、BCM5352のオプションが表示されません。そのため、brcm47xxまたはbrcm63xxディレクトリに作成したイメージの1つでルーターをフラッシュするのは気が進まないのです。私は間違って推測してルーターをブリックしたくありません。

質問1 -BCM5352チップセットでWRT54G-V4をターゲットにするには、make menuconfigを使用してどのBroadcom構成を選択する必要がありますか?

質問2-上記で生成した「HelloWorld」実行可能ファイルを54Gのコマンドラインから直接実行する必要がありますか、それともhttp://www.gargoyle-router.com/wiki/doku.php?idに従ってパッケージにする必要があります。 = openwrt_coding

TIA

4

1 に答える 1

1

公式のハウツーに従うことができます ( 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 でテスト済み。

于 2016-07-23T12:18:15.007 に答える