Armadilloフォーラム

ライブラリの互換性について

eagle-ss

2018年5月15日 13時30分

いつもお世話になります。伊藤と申します。

ラズパイで動かしておりましたプログラムをArmadillo上で動かそうと思い作業を進めていたの
ですがArmadillo用のクロスコンパイルで詰まってしまいましたので投稿させてもらいました。

Armadillo開発者サイトの『第七章開発の基本的な流れ』を確認しながら
プログラムをコンパイルしていたのですが

まずプログラムにboostのライブラリが必要だったのでインストールを行い。
$ gcc で通常のコンパイルを行ったとこの問題なく通りました。

次にクロスコンパイルを行う為に
/usr/arm-linux-gnueabi/include
/usr/arm-linux-gnueabi/lib

にboostのライブラリを置き

$ arm-linux-gnueabi-gcc とクロスコンパイルを行ったところ

libに入れていましたlibboost_system.so等が互換性がないとスキップされてしまい
『-lboost_systemが見つかりません』と表示されます。

互換性関連を調べてみましたがどうも上手くいきませんので
お手数をおかけいたしますが、よろしくお願いいたします。

コメント

すみません。現在のArmadillo開発者ガイドはArmadillo-640や
Armadillo-X1といったDebianユーザーランドを標準とした製品
には対応していません。

クロスコンパイルということは、ArmadilloではなくATDEの話だと
思いますが、ATDE8ではクロス開発用のlibboostはaptでインストール
することができます。手作業でファイルをコピーする必要はありません。

[ATDE]$ sudo dpkg --add-architecture  armhf
[ATDE]$ sudo apt-get update
[ATDE]$ sudo apt-get install libboost-system-dev:armhf

これでlboot_systemを指定してコンパイルできると思います。

もう一点、Armadillo-640の場合、クロスツールチェーンは
arm-linux-gnueabi ではなく arm-linux-gnueabihf になります。

尚、Armadillo-640には普通のDebianユーザーランドがインストール
されているので、クロスコンパイルは必須ではありません。

コンパイル速度が問題でなければ、Armadillo-640自身でセルフ
コンパイルする方がライブラリの導入は普通のPCと同じ手順なので
楽かと思います。

> すみません。現在のArmadillo開発者ガイドはArmadillo-640や
> Armadillo-X1といったDebianユーザーランドを標準とした製品
> には対応していません。
>
> クロスコンパイルということは、ArmadilloではなくATDEの話だと
> 思いますが、ATDE8ではクロス開発用のlibboostはaptでインストール
> することができます。手作業でファイルをコピーする必要はありません。
>
>

> [ATDE]$ sudo dpkg --add-architecture  armhf
> [ATDE]$ sudo apt-get update
> [ATDE]$ sudo apt-get install libboost-system-dev:armhf
> 

>
> これでlboot_systemを指定してコンパイルできると思います。
>
> もう一点、Armadillo-640の場合、クロスツールチェーンは
> arm-linux-gnueabi ではなく arm-linux-gnueabihf になります。
>
> 尚、Armadillo-640には普通のDebianユーザーランドがインストール
> されているので、クロスコンパイルは必須ではありません。
>
> コンパイル速度が問題でなければ、Armadillo-640自身でセルフ
> コンパイルする方がライブラリの導入は普通のPCと同じ手順なので
> 楽かと思います。
>

返信ありがとうございます。

上記の方法で無事コンパイルすることができました。

それと、DebianユーザーランドですがminicomでArmadillo-640に接続し、そこでコンパイルを行えば
クロスコンパイルを行う必要がないという解釈で問題ないでしょうか?

問題がなければDebianユーザーランドを使用した方法でコンパイルしていこうと思います。

対応ありがとうございました。

> それと、DebianユーザーランドですがminicomでArmadillo-640に接続し、そこでコンパイルを行えば
> クロスコンパイルを行う必要がないという解釈で問題ないでしょうか?

はい、その通りです。
CPUが1個しかないのでコンパイルが少し遅いのですが、パッケージ名や
ビルド手順が殆どPCと同じになるので、世間一般にあるドキュメント類が
そのまま参考になるはずです。