Armadilloフォーラム

gnuplot のクロスコンパイル

rabbitc

2015年4月8日 9時09分

始めて投稿します。rabbitcと申します。お世話になります。

私は大学の研究者で医療データの解析を行っています。
今回、Armadillo440を用いて簡易デバイスを開発する事に
なりました。

そこで、Atde3をWindows8にインストールして自作のプログラムを
仮想空間内で使用できるようになりました。

このプログラムはC++で書かれていますが、

1、c++のクロスコンパイルはできますか?arm-linux-gnueabi-gccでは
  エラーがでます。
2、Gnuplotのライブラリーを使っていますので、Armadillo440で
  Gnuplotを使えるようにしたいと思い、クロスコンパイルを
  しようとしました。
  sudo dpkg -i gnuplot_4.6.6-2_all.deb
  
しかし、以下のエラーがでます。

atmark@atde3:~/Desktop$ sudo dpkg -i gnuplot_4.6.6-2_all.deb
(データベースを読み込んでいます ... 現在 90722 個のファイルとディレクトリがインストールされています。)
(gnuplot_4.6.6-2_all.deb から) gnuplot を展開しています...
dpkg-deb: ファイル `gnuplot_4.6.6-2_all.deb' は理解不能なデータメンバー data.tar.xz を含んでいます。終了します
dpkg: gnuplot_4.6.6-2_all.deb の処理中にエラーが発生しました (--install):
サブプロセス dpkg-deb --fsys-tarfile はエラー終了ステータス 2 を返しました
以下のパッケージの処理中にエラーが発生しました:
gnuplot_4.6.6-2_all.deb

「data.tar.xz」を含んでいることが原因だと思いますが、
どうすれば解決できますでしょうか?ご教授いただけますと
助かります。

よろしくお願いします。


コメント

rabbitc

2015年4月8日 22時09分

お世話になります。

少しずつでも、自己解決に向けて進めています。

http://stackoverflow.com/questions/21013325/dpkg-error-contains-ununder…
ここを見る限り、dpkgのバージョンが古いようです。このバージョンは1.14.31でした。
そこで、最新版のdpkg_1.17.24をダウンロードしてきました。

しかし、tar.xz で圧縮してあるため、
tar Jxf atde5-i386-20130710.tar.xz
で解凍を試みました。しかし、Jは無効なオプションと言われました。

そこで、xz形式を回答するために。xz-5.2.1をダウンロードして
インストールしました。

atde3:~/Desktop/dpkg> which xz
/usr/local/bin/xz

これは、何とかなった様です。しかし、

atde3:~/Desktop/dpkg> xz dpkg_1.17.24.tar.xz
xz: error while loading shared libraries: liblzma.so.5: cannot open
shared object file: No such file or directory

となり、上手く行きません。

もう少し努力しますが、tar.xz を解凍する方法をお教えいただけますと
助かります。

> 始めて投稿します。rabbitcと申します。お世話になります。
>
> 私は大学の研究者で医療データの解析を行っています。
> 今回、Armadillo440を用いて簡易デバイスを開発する事に
> なりました。
>
> そこで、Atde3をWindows8にインストールして自作のプログラムを
> 仮想空間内で使用できるようになりました。
>
> このプログラムはC++で書かれていますが、
>
> 1、c++のクロスコンパイルはできますか?arm-linux-gnueabi-gccでは
>   エラーがでます。
> 2、Gnuplotのライブラリーを使っていますので、Armadillo440で
>   Gnuplotを使えるようにしたいと思い、クロスコンパイルを
>   しようとしました。
>   sudo dpkg -i gnuplot_4.6.6-2_all.deb
>   
> しかし、以下のエラーがでます。
>
>
> atmark@atde3:~/Desktop$ sudo dpkg -i gnuplot_4.6.6-2_all.deb
> (データベースを読み込んでいます ... 現在 90722 個のファイルとディレクトリがインストールされています。)
> (gnuplot_4.6.6-2_all.deb から) gnuplot を展開しています...
> dpkg-deb: ファイル `gnuplot_4.6.6-2_all.deb' は理解不能なデータメンバー data.tar.xz を含んでいます。終了します
> dpkg: gnuplot_4.6.6-2_all.deb の処理中にエラーが発生しました (--install):
> サブプロセス dpkg-deb --fsys-tarfile はエラー終了ステータス 2 を返しました
> 以下のパッケージの処理中にエラーが発生しました:
> gnuplot_4.6.6-2_all.deb
>
> 「data.tar.xz」を含んでいることが原因だと思いますが、
> どうすれば解決できますでしょうか?ご教授いただけますと
> 助かります。
>
> よろしくお願いします。

at_hanada

2015年4月8日 22時18分

花田です。

> atde3:~/Desktop/dpkg> xz dpkg_1.17.24.tar.xz
> xz: error while loading shared libraries: liblzma.so.5: cannot open
> shared object file: No such file or directory

その解決だけですと、liblzma5パッケージをインストールするだけと思います。スーパーユーザーで


root@atde5:~# apt-get install liblzma5

してから、再度試してみてください。

rabbitc

2015年4月8日 22時25分

花田様

ご返信ありがとうございます。早速試みました。

root@atde3:/home/atmark# apt-get install liblzma5
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
E: パッケージ liblzma5 が見つかりません

となります。これは、atde が古いという事でしょうか?

rabbitc

> 花田です。
>
> > atde3:~/Desktop/dpkg> xz dpkg_1.17.24.tar.xz
> > xz: error while loading shared libraries: liblzma.so.5: cannot open
> > shared object file: No such file or directory
>
> その解決だけですと、liblzma5パッケージをインストールするだけと思います。スーパーユーザーで
>
>
> root@atde5:~# apt-get install liblzma5
>

>
> してから、再度試してみてください。
>

at_hanada

2015年4月8日 22時53分

> E: パッケージ liblzma5 が見つかりません

失礼しました、lennyだとlzma5パッケージがないですね。
lzma5はWheezy(Debian 7)以降にあるのですが、ATDE3へのバックポートはちょっと手間がかかります。

ATDE5(Wheezyベース)を使用して解凍するのが、単純な解決方法ですね。
…それならということで、私の手元のATDE5で解凍してtar.gzに圧縮しなおしたものを添付します。

また、一応Windows用にも(lhazやUniversal Extractorなど)xzを含むdebを解凍できるフリーウェアが存在します。

それから、gnuplotのバージョンに拘らない(少し古くても良い)ということであれば、下記のものならATDE3のdpkgでも解凍できるはずです。

http://archive.debian.net/lenny/gnuplot

ファイル ファイルの説明
gnuplot_4.6.6-2_all.tar.gz gnuplot_4.6.6-2_all.tar.gzインストールイメージ部の再圧縮

at_hanada

2015年4月8日 23時01分

花田です。

追伸というか、中身を再確認した結果です(^^;

> gnuplot_4.6.6-2_all.tar.gz

ドキュメントしか入っていないですね。
こちらでも確認できます。
https://packages.debian.org/jessie/all/gnuplot/filelist

gnuplotの本体は、
http://archive.debian.net/lenny/gnuplot
にリンクされている「gnuplot-nox」または「gnuplot-x11」の方に含まれます。
解凍してArmadillo上で動作させるべきは、(ARM用にビルドされた)これらのパッケージのようです。

rabbitc

2015年4月8日 23時24分

花田様

いろいろありがとうございます。

仮想環境ではGnuplotのインストールはできています。
問題は、gnuplot_4.6.6-2_all.deb のクロスコンパイルです。

それにはどうやら、dpkg_1.17.24を入れなくてはならないのです。

dpkg_1.17.24.tar.xz は手に入れましたが
これの解凍に困っているのです(^^;

よろしければ、こいつを解凍して頂けますと助かります。

> 花田です。
>
> 追伸というか、中身を再確認した結果です(^^;
>
> > gnuplot_4.6.6-2_all.tar.gz
>
> ドキュメントしか入っていないですね。
> こちらでも確認できます。
> https://packages.debian.org/jessie/all/gnuplot/filelist
>
> gnuplotの本体は、
> http://archive.debian.net/lenny/gnuplot
> にリンクされている「gnuplot-nox」または「gnuplot-x11」の方に含まれます。
> 解凍してArmadillo上で動作させるべきは、(ARM用にビルドされた)これらのパッケージのようです。
>
>
>

at_hanada

2015年4月8日 23時30分

花田です。

> 問題は、gnuplot_4.6.6-2_all.deb のクロスコンパイルです。

gnuplot_4.6.6-2_all.debをソースファイルとお考えでしたか?
こちらは先ほど
> https://packages.debian.org/jessie/all/gnuplot/filelist
に示した通り、ドキュメントしか入っていません。

そのv4.6.6に対応した(Debianに置いてある)ソースファイルですと、「gnuplot_4.6.6.orig.tar.gz」になります。
こちらにリンクされているものです。
https://packages.debian.org/source/jessie/gnuplot

これですと、tar.gzですのでATDE3でも解凍できると思います。

(参考までに、v4.2.2ですとこちらです http://archive.debian.net/source/lenny/gnuplot )

rabbitc

2015年4月8日 23時58分

花田様

いろいろありがとうございます。

取りあえず、gnuplot_4.6.6.orig.tar.gz を入手して展開ができました。
ありがとうございます。

よくわかっていないのですが、これをArmadill440でも使えるようにするのは
クロスコンパイルが必要ではないかと思うのですが、どうすれば良いのでしょう?
arm-linux-gnueabi-gcc
を使えばいいのでしょうか?

素人の質問で申し訳ありませんが、よろしくお願いします。

> 花田です。
>
> > 問題は、gnuplot_4.6.6-2_all.deb のクロスコンパイルです。
>
> gnuplot_4.6.6-2_all.debをソースファイルとお考えでしたか?
> こちらは先ほど
> > https://packages.debian.org/jessie/all/gnuplot/filelist
> に示した通り、ドキュメントしか入っていません。
>
> そのv4.6.6に対応した(Debianに置いてある)ソースファイルですと、「gnuplot_4.6.6.orig.tar.gz」になります。
> こちらにリンクされているものです。
> https://packages.debian.org/source/jessie/gnuplot
>
> これですと、tar.gzですのでATDE3でも解凍できると思います。
>
> (参考までに、v4.2.2ですとこちらです http://archive.debian.net/source/lenny/gnuplot )
>

at_yashi

2015年4月9日 20時49分

少しさかのぼって

> 1、c++のクロスコンパイルはできますか?arm-linux-gnueabi-gccでは
>   エラーがでます。

arm-linux-gnueabi-g++ を使うとできるはずです。

> 2、Gnuplotのライブラリーを使っていますので、Armadillo440で
>   Gnuplotを使えるようにしたいと思い、クロスコンパイルを
>   しようとしました。

a440 の液晶画面に gnuplot で描画したいということでしょうか?
それとも gnuplot の持っている演算するための関数を使いたい感じですか?

gnuplot は、C や C++ から使えるライブラリになっていなかったと思うので
コマンドを使うだけであれば、Debian パッケージから持ってこれます。

http://armadillo.atmark-techno.com/howto/use-debian-binary

この↑ howto が参考になると思いますがどうでしょう?

a440の液晶にグラフを描画したいのであれば、gnuplot-x11 を、
そうでなければ(例えば PNGを出力したいなど)、gnuplot-nox が良いかと思います。

ただ、最近の gnuplot は依存しているパッケージが多いのでちょっと大変かもしれません。

もう少し、どのようなことを実現したいか教えてもらえると他の提案もできるかもしれません。

rabbitc

2015年4月9日 23時28分

ご連絡ありがとうございます。

> arm-linux-gnueabi-g++ を使うとできるはずです。

これは、できました。助かります。

>
> http://armadillo.atmark-techno.com/howto/use-debian-binary
>
> この↑ howto が参考になると思いますがどうでしょう?

いま見ているところです、いろいろ試してみます。

>
> もう少し、どのようなことを実現したいか教えてもらえると他の提案もできるかもしれません。

やりたいことは、外部デバイスで計測された医療データの解析です。
データはいったんArmadillo440に蓄積されますが、これまではデータを外部に取り出して、
Windows上のVisual Studioで作ったプログラムで解析を行っていました。

それを直接Armadill440上で解析させたいと考えています。

Windows上のプログラムは、Gnuplotの内部機能(関数の近似)を用いて解析をしています。
そのため、Armadill440でGnuplotを呼び出せば動く状態にしたい考えています。
グラフィックは必要としていません。

現在のところ
・dpkg_1.17.24.tar.gz が有ったの展開しました。
これは、インストールできました。

また、クロスコンパイルのために
gnuplot-nox_4.2.2-1.2_armel.deb
gnuplot-x11_4.2.2-1.2_armel.deb
の二つを入手しました。

これを用いて
dpkg -i gnuplot-nox_4.2.2-1.2_armel.deb
をしたところ、
ーーーーー
dpkg: エラー: パッケージ情報ファイル `/usr/local/var/lib/dpkg/status' 読み取り用のオープンに失敗しました: そのようなファイルやディレクトリはありません

ここで止まっています。

確かに、`/usr/local/var/lib/dpkg/status' はないのですが・・・

必要とされる機能は古いバージョンにもあるので、バージョンにこだわりはありません。

お忙しいところすみませんが、よろしくお願いします。

at_yashi

2015年4月10日 11時20分

> やりたいことは、外部デバイスで計測された医療データの解析です。
> データはいったんArmadillo440に蓄積されますが、これまではデータを外部に取り出して、
> Windows上のVisual Studioで作ったプログラムで解析を行っていました。
>
> それを直接Armadill440上で解析させたいと考えています。
>
> Windows上のプログラムは、Gnuplotの内部機能(関数の近似)を用いて解析をしています。
> そのため、Armadill440でGnuplotを呼び出せば動く状態にしたい考えています。
> グラフィックは必要としていません。

なるほど。windows ではなく ATDEの中では、gnuplotを使えているんですよね?
ATDEでは、debian 版をつかってますか?

もし可能なら、ほとんどの機能を止めた gnuplot を ATDEで作成できませんか?
↓こんな感じで。


$ curl -LO http://downloads.sourceforge.net/project/gnuplot/gnuplot/5.0.0/gnuplot-5.0.0.tar.gz
$ tar xfv gnuplot-5.0.0.tar.gz
$ cd gnuplot-5.0.0
$ ./configure --disable-backwards-compatibility --without-x --without-cairo --disable-wxwidgets --disable-mouse --without-readline --disable-history-file
$ src/gnuplot .....

これで作成した gnuplot で、解析ができたら、debian版を cross パッケージでいれるより、cross compile した方が早いかもしれません。
上の configure で作成すると依存ライブラリが激減するので。


$ ldd src/gnuplot
linux-vdso.so.1 (0x00007ffcb17fb000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f1b758fc000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1b756f8000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f1b753ec000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1b750eb000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f1b74ed5000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1b74b2b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1b75b49000)

前出のhowtoをみて、依存しているパッケージを入れる方が簡単そうであれば、無理にこの方法を選択しなくてもよいです。

まだ、クロスコンパイルまでは試してませんが....。
上記でうまくいったら、

./configure --host=arm-linux-gnueabi --target=arm-linux-gnueabi --disable-backwards-compatibility --without-x --without-cairo --disable-wxwidgets --disable-mouse --without-readline --disable-history-file

で、できませんかね?

rabbitc

2015年4月10日 19時26分

お世話になります。

>
> $ curl -LO http://downloads.sourceforge.net/project/gnuplot/gnuplot/5.0.0/gnuplot-5.0.0.tar.gz
> $ tar xfv gnuplot-5.0.0.tar.gz
> $ cd gnuplot-5.0.0
> $ ./configure --disable-backwards-compatibility --without-x --without-cairo --disable-wxwidgets --disable-mouse --without-readline --disable-history-file
> $ src/gnuplot .....
>

これを試したところ、gnuplot-5.0.0 のインストールに成功しました.
また、これで我々の作ったプログラムは機能します.
ありがとうございました.

> これで作成した gnuplot で、解析ができたら、debian版を cross パッケージでいれるより、cross compile した方が早いかもしれません。

ちょっと以下を試しました.

>
> ./configure --host=arm-linux-gnueabi --target=arm-linux-gnueabi --disable-backwards-compatibility --without-x --without-cairo --disable-wxwidgets --disable-mouse --without-readline --disable-history-file
>

>

通りました.すると、これが追加されていますので
--host=arm-linux-gnueabi --target=arm-linux-gnueabi

この/usr/local/bin/gnuplot のバイナリーファイルがクロスコンパイルできた
結果ということでしょうか?

もしそうなら、これをarmadillo440 に持っていきます。

at_yashi

2015年4月10日 19時29分

> 通りました.すると、これが追加されていますので
> --host=arm-linux-gnueabi --target=arm-linux-gnueabi
>
> この/usr/local/bin/gnuplot のバイナリーファイルがクロスコンパイルできた
> 結果ということでしょうか?

そうです。

きっと、ライブラリは足りると思うで...。
たりなかったら、debian から拾ってください。

ファイルがどのパッケージに入っているかは、


dpkg -S /path/to/file

で、可能です。

rabbitc

2015年4月10日 19時34分

ありがとうございます。では、ケーブル付けて移動させてみます。

>
> きっと、ライブラリは足りると思うで...。
> たりなかったら、debian から拾ってください。
>

また結果など報告します。
もう少しの様ですね。

rabbitc

2015年4月11日 15時24分

お世話になっております。
たびたびご迷惑をお掛けします。

gnuplot のクロスコンパイルができましたので、Armadill440にファイルを
転送しようとしています。

・LANケーブルの接続はしました。
・Windows のコマンドプロンプトから telnet ”ip-adress” でlogin できました。
 Armadillo上の操作はできます。

・VMware は外部のネットワークはつながっています。

http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-1_ja-2…
に沿ってバイナリーファイルの移動を試みます。

このHPにある様に、lftp をインストールします。
・VMwareのターミナルから、sudo apt-get -f install lftp の実行結果がこれです。

ーーーーーーーー
root@atde3:/home/atmark/Desktop# sudo apt-get -f install lftp
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の問題を解決するために 'apt-get -f install' を実行する必要があるかもしれません:
以下のパッケージには満たせない依存関係があります:
gnuplot-nox: 依存: libgd2-noxpm (>= 2.0.36~rc1~dfsg) しかし、インストールされようとしていません または
libgd2-xpm (>= 2.0.36~rc1~dfsg) しかし、インストールされようとしていません
E: 未解決の依存関係です。'apt-get -f install' を実行してみてください (または解法を明示してください)。

ーーーーーーーーー

となります。この状態ではftpはインストールされていない様です。
何が原因なのでしょうか?

またVMwareのterminal からは telnet で Armadillo440に、つながりません。
どこかの設定を行わなくてはならないのでしょうか?

お教えいただけますと助かります。よろしくお願いします。

at_yashi

2015年4月15日 16時26分

> E: 未解決の依存関係です。'apt-get -f install' を実行してみてください (または解法を明示してください)。

きっとなにか作業しているときに、パッケージの依存関係を壊したんだと思います。
上記にあるように sudo apt-get -f installとすると、治ることがあります。

http://goo.gl/A6YtDz 検索とすると、いろいろ出てくるみたいです。

rabbitc

2015年4月15日 20時42分

at_yashi 様

ご連絡ありがとうございます。自己解決に向けて努力中です。

なかなか上手く行かないので、WindowsのコマンドラインからFTPで直接送信しました。
状況がつかめなくて苦労しましたが、何とか実行ファイルの転送に成功しました。

cpp で解析プログラムを作成しましたので
http://armadillo.atmark-techno.com/howto/cpp-usage
に従い、libstdc++.so.6 などを送信してリンクをはり、
解析プログラムは動作する事が分かりました。

ところが、
./configure --host=arm-linux-gnueabi --target=arm-linux-gnueabi --disable-backwards-compatibility --without-x --without-cairo --disable-wxwidgets --disable-mouse --without-readline --disable-history-file

でクロスコンパイルしたgnuplot が動きません。

./gnuplot:1:Syntax error:"(" unexpected

今のところアイディアなしです。もう少し頑張りますので、ご助言頂けますと
助かります。

> > E: 未解決の依存関係です。'apt-get -f install' を実行してみてください (または解法を明示してください)。
>
> きっとなにか作業しているときに、パッケージの依存関係を壊したんだと思います。
> 上記にあるように sudo apt-get -f installとすると、治ることがあります。
>
> http://goo.gl/A6YtDz 検索とすると、いろいろ出てくるみたいです。
>
>

rabbitc

2015年4月16日 23時41分

at_yashi 様

> これだったりしますか?

これだったりしました(^^;

どうもありがとうございました。

とりあえず、計算結果もWindows上のものと同じになりました。
いろいろご迷惑と書けましたが、何とかなったようです。
多分これで大丈夫だと思いますが、もしまた何かありましたら
よろしくお願いします。