物好き者

物好き者が行ったことを載せています。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop

クロスコンパイル

DD-WRTで使用するtinyproxyですが、ipkgでダウンロードしたものではfilterが使えませんでしたが、wgetによりrc6のものをダウンロード・インストールすることで、filterが使えるようになりました。
このため、tinyproxyのコンパイルをする必要はなくなりましたが、コンパイルやクロスコンパイルの練習のために続けていくことにしました。

まず、仙石浩明の日記 のLa Fonera 上で stone を走らせてみる を参考に、クロスコンパイル環境をLinux上に構築します。


http://download.fon.com/firmware/fonera/latest/fonera.tar.bz2
 からファイルをダウンロードし、展開します。

make menuconfig・makeを実行することで、クロスコンパイル環境が構築されます。
export PATH=$PATH:/home/LaFonera/staging_dir_mips/bin として、コンパイラの場所にパスを通します。



次にtinyproxyのソースを取得して、展開します。
展開したディレクトリで、./configure を実行してMakefileを作成します。
make を実行すると、srcディレクトリにバイナリファイルが作成されます。
file コマンドを実行するとファイルのタイプが表示されますが、i686でありクロスコンパイルされていません。ただし、i686ベースのマシンでは、問題なく動作しました。

組み込みLinuxシステムにおけるドライバの開発 によると、./configure 実行時にパラメータを渡して、クロスコンパイルであると設定する必要があるようです。

itb-TECH 【 IT Boost - Apache configure - 】 に./configure 実行時のオプションがあります。

mips-linux-uclibc-gcc -v を実行すると、これらのオプションが表示されるので、これを参考に ./configure にオプションをつけてみます。
しかし、下記のようにうまくコンパイルできません。

エラーで中断
./configure CC='/home/LaFonera/staging_dir_mips/bin/mips-linux-uclibc-gcc'
--prefix=/home/LaFonera/staging_dir_mips --build=mips-linux-uclibc
--host=mips-linux-uclibc --target=mips-linux-uclibc --enable-languages=c,c++
--enable-shared --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld
--disable-nls

完了してmakeすると、i386ベース
./configure --prefix=/home/LaFonera/staging_dir_mips
--build=i386-pc-linux-gnu --host=i386-pc-linux-gnu --target=mips-linux-uclibc
--enable-languages=c,c++ --enable-shared --disable-__cxa_atexit
--enable-target-optspace --with-gnu-ld --disable-nl

エラーで中断
./configure CC='/home/LaFonera/staging_dir_mips/bin/mips-linux-uclibc-gcc'
--prefix=/home/LaFonera/staging_dir_mips --build=mips-linux-uclibc
--host=i386-pc-linux-gnu --target=mips-linux-uclibc --enable-languages=c,c++
--enable-shared --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld
--disable-nls

完了してmakeすると、i386ベース
/configure --prefix=/home/LaFonera/staging_dir_mips --build=i386-asianux-linux
--host=i386-asianux-linux --target=mips-linux-uclibc --enable-languages=c,c++
--enable-shared --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld
--disable-nls

エラーで中断
configure CC='/home/LaFonera/staging_dir_mips/bin/mips-linux-uclibc-gcc'
--prefix=/home/LaFonera/staging_dir_mips --build=i386-asianux-linux
--host=i386-asianux-linux --target=mips-linux-uclibc --enable-languages=c,c++
--enable-shared --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld
--disable-nls

エラーで中断
./configure --prefix=/home/LaFonera/staging_dir_mips/bin/
--host=i386-asianux-linux --target=mips-linux-uclibc --enable-languages=c,c++
--enable-shared --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld
--disable-nls CC='/home/LaFonera/staging_dir_mips/bin/mips-linux-uclibc-gcc'
checking whether the system's regex library is broken... yes
configure: error: Your system's regexec() function is broken.

エラーで中断
./configure --prefix=/home/tinyproxy/tinyproxy-1.7.0/
--target=mips-linux-uclibc
CC='/home/LaFonera/staging_dir_mips/bin/mips-linux-uclibc-gcc'
LDFLAGS='/home/LaFonera/staging_dir_mips/bin/mips-linux-uclibc-ld'
CXX='/home/LaFonera/staging_dir_mips/bin/mips-linux-uclibc-g++'

完了してmakeすると、i386ベース
./configure --build=i386-pc-linux-gnu --host=i386-pc-linux-gnu
--target=mips-linux-uclibc

エラーで中断
./configure --build=i386-asianux-linux --target=mips-linux-uclibc
CC='/home/LaFonera/staging_dir_mips/bin/mips-linux-uclibc-gcc'
--prefix=/home/tinyproxy/tinyproxy-1.7.0
LDFLAGS='/home/LaFonera/staging_dir_mips/bin/mips-linux-uclibc-ld'
CXX='/home/LaFonera/staging_dir_mips/bin/mips-linux-uclibc-g++'

クロスコンパイルはまだできません。

スポンサーサイト

PageTop

コメント


管理者にだけ表示を許可する
 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。