Qbilinux 日記

Linux に関係することだけではなく,最近は一般的なコンピュータやガジェット関係についても記載してます.

Plamo Linux の arm クロスコンパイル環境

ARM 版の Plamo Linux を作ってみるのも面白いねという話がたまに出るので,気分転換に Plamo Linux 上で動作する ARM のクロスコンパイル環境を作ってみました.Plamo Linux 64bit 版のみです.

作り方は,時間出来ればまとめてドキュメント書くかも知れないけど,いろんなところを検索すると出て来ると思いますのでとりあえず省略します.かなりややこしいので....ごめんなさい.

興味がある人もいるかと思ったので ftp://plamo.linet.gr.jp/pub/Plamo-test/for-6.x/x86_64/arm_cross_gcc-5.2.0-x86_64-P1.txz あたりに置いてますけど,あくまでサンプルです.ラズパイって話もあるので,一応,BCM2835 の config 使っています.また,EABI にしてあります.

通常通り,パッケージとしてインストールした後,/opt/arm/bin に path を通して /opt/arm/bin 以下のコンパイルコマンドなどを実行すれば使えます.簡単なプログラムで

$ arm-none-linux-gnueabi-gcc -o main main.c
$ file main
main: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 4.3.0, not stripped
$ arm-none-linux-gnueabi-gcc -static -o main main.c
$ ls -al main
-rwxr-xr-x 1 matsuki users 2,848,812 11月 14日 14:04 main*
$ file main
main: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 4.3.0, not stripped
$ arm-none-linux-gnueabi-strip main
$ ls -al main
-rwxr-xr-x 1 matsuki users 495,944 11月 14日 14:04 main*
$ file main
main: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 4.3.0, stripped

くらいは確認しています.まぁ,環境作成途中で arm-none-linux-gnueabi-gcc で arm-none-linux-gnueabi-gcc を作るなどの作業を繰り返しているので問題はないかなとは思っています.

ソースは

あたりのものを使っています.Plamo Linux 本体よりも新しい物ばかりですね.:-)

まぁ,最初の環境を作るのはちょっと面倒だけど,一回作っておけば,その環境からアップデートとか,コンパイルオプション変更したりとかは割と簡単に出来ますから,叩き台にはなるかなと思ってね.アップデートしたければ prefix を /opt/arm にした gcc なり binutils なりを作成して上書きインストールしてしまえば良いですし.

参考まで.