お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2014-05-17 12:44:41

taku_s
メンバ
登録日: 2008-12-14

Multiarchについて

ターゲット ARM Ubuntu12.04
親機 i386 Ubuntu 13.10で、クロスコンパイル
ARMボード上で、libjpeg62-devを使いたくてDebianのリポジトリからlibjpeg62-dev_6b1-3_armhf.debをダウンロードし
(Ubuntuのリポジトリでは見当たらなかったので)
# dpkg-cross -b -a armhf libjpeg62-dev_6b1-3_armhf.deb すると
dpkg-cross: Skipping Multi-Arch package 'libjpeg62-dev_6b1-3_armhf.deb'.
とのメッセージで終わってしまいます。

ネット上でいろいろ調べると、Ubuntu12.04からMultiarchがサポートされているとか
そこで、
# dpkg --add-architecture armhf
# dpkg --print-foreign-architectures
armhf
として
Synapticsで、libjpeg62-devをインストールしてみたんですが、
./usr/lib/i386-linux-gnu/libjpeg.so.62はインストールされていますが
./usr/lib/arm-linux-gnu/ディレクトリも作られていません。
./usr/arm-linux-gnueabiと ./usr/arm-linux-gnueabihfが gcc-arm-linuxgnueabihfをインストールした時に作られましたが、
この中の/lib内にもlibjpeg.so.62はありませんでした。

以前なら、dpkg-crossで展開先を/usr/arm-linux-gnueagihfの書き直した _all.debが作成されたと思うんですが。

Mulitarchになってからのクロスコンパイルはどのようにすればよいのでしょうか?
よろしくお願いいたします。

オフライン

 

#2 2014-05-19 11:24:08

S_T_M
メンバ
登録日: 2012-06-03

Re: Multiarchについて

私も一月ばかり挑戦しましたが、
あんまりうまく行かなかったので、やめておいたほうがいいです。
コンパイルはラズベリーパイのエミュレータ等のARMのDebianで行うのが一番早いです。
あと、ARMにはarmelとarmhfがあります。
そのボードがarmhfに対応していないようなかなり古いものでなければいいのですが。
ちなみに私はラズベリーパイの実機でやっています。
Mathematicaもタダで使えて、まあ、色々できて楽しいです。

オフライン

 

#3 2014-05-19 21:56:59

taku_s
メンバ
登録日: 2008-12-14

Re: Multiarchについて

S_T_Mさま
レス、ありがとうございます。

その後、Debian 7でテストしたところ、問題なくインストールできました。
Ubuntuのリポジトリは、まだ整備が不十分なようですね。

最初に書いた手順で
/usr/lib/arm-linux-gnueabihf/libjpeg62が作成されました。

あとは、qemu-user-staticをインストール後、armのrootfsにchrootしてコンパイルするのが、今後の
クロス開発の標準手順になるんでしょうかね

オフライン

 

#4 2014-06-01 12:57:01

taku_s
メンバ
登録日: 2008-12-14

Re: Multiarchについて

追記
Debian 7 でMultiarchが解決できるように書きましたが、結果的にはダメでした。
ライブラリなど、うまくインストールされるものもありましたが、今現在は肝心のbuild-essential:armhfが依存関係が壊れた状態になってしまいます。

Multiarchが採用されたおかげで、従来のdkpg-crossが使えないパッケージもあるので
dpkg -x して手動で配置するしかないようです。

Multarchの構想はすばらしいのでしょうが、もうしばらく調整が必要なようですね

オフライン

 

Board footer

Powered by FluxBB