Armadilloフォーラム

Armadillo-840のユーザーランドのビルドで、openssl機能のビルドができない

sh_kondoh

2014年8月20日 15時21分

はじめまして、近藤と申します。

 Armadillo-840のユーザーランドのビルドにおいて、opensslの機能を有効にした場合、
ビルドエラーが発生しビルドできない状況になりますので、解消方法をお教え下さい。

使用環境
・ubuntu12.04LTS上に、Armadillo-840の添付DVDの以下のディレクトリをもとに、
 クロスコンパイル環境を構築
 cross-dev\deb\armhf
・Armadillo-800-evaで動作確認をしたプログラムを、上記環境でDebian7(wheeze)
 でクロスコンパイルできるように、Debian7(wheeze)のパッケージを
 "dpkg-cross -b -arch armhf"で導入
 →クロスコンパイル完了

使用ファイル
・atmark-dist-20140602.tar.gz
・linux-3.4-at8.tar.gz

状況
 atmark-dist-20140602ディレクトリ配下で、make menuconfigを実行し、
Default all settings (lose changes) (NEW)を選択し、opensslを有効にします。
 次に、makeを実行すると以下のようなエラーが発生し、makeが終了します。

make[2]: ディレクトリ '/home/openflow/atmark-dist-20140602/user/openssl' に入ります
make[2]: *** 'progs.h' に必要なターゲット 'progs.pl' を make するルールがありません. 中止.
make[2]: ディレクトリ '/home/openflow/atmark-dist-20140602/user/openssl' から出ます
make[1]: *** [all] エラー 2
make[1]: ディレクトリ '/home/openflow/atmark-dist-20140602/user' から出ます
make: *** [subdirs] エラー 1

 progs.plというファイルを探してみましたが、ビルド環境のPC上では見つかりませんでした。
 opensslを有効にするためには、別に必要なパッケージをインストールしなければいけない
のでしょうか。

 その他、Armadillo-840を使う上で、根本的な間違いがございましたら、ご指摘ください。

コメント

ATDE5にはarmel/armhfのクロス開発用のlibopensslがインストールされています。
Atmark Distのopensslはmenuconfigで選択しないようにしてくみてください。

atmark-dist/romfsに近藤様が作成したアプリケーションが配置されるようにした上で、
Atmark Distをmakeすると、途上でmake romfsが呼ばれて、自動的に必要なクロス開発用の
ライブラリがATDE5内(/usr/arm-linux-gnueabihf/lib以下等)から、romfs以下の/usr/lib等に
取り込まれます。makeの最後に make imageが呼ばれて romfsディレクトリは、そのまま、
romfs,img.gz になります。

opensslのクロス開発用のライブラリ(末尾にcrossという名前の付いたもの)は、
ATDE5にインストール済みです。
下記のようにして、dpkgで調べる事ができます。

atmark@atde5:~$ dpkg -l |grep libssl|grep cross
ii  libssl-dev-armel-cross                            1.0.1e-2                                  all          SSL development libraries, header files and documentation (for cross-compiling)
ii  libssl-dev-armhf-cross                            1.0.1e-2                                  all          SSL development libraries, header files and documentation (for cross-compiling)
ii  libssl1.0.0-armel-cross                           1.0.1e-2                                  all          SSL shared libraries (for cross-compiling)
ii  libssl1.0.0-armhf-cross                           1.0.1e-2                                  all          SSL shared libraries (for cross-compiling)

近藤です。

 at_ohsawaさん、ご回答ありがとうございます。

> ATDE5にはarmel/armhfのクロス開発用のlibopensslがインストールされています。
> Atmark Distのopensslはmenuconfigで選択しないようにしてくみてください。

 840の開発は、あくまでATDE5の上で行わなければいけないということですね。
 800-evaの場合は、クロスコンパイル環境の上で完結していたので、同じ手法で
開発しておりました。

> atmark-dist/romfsに近藤様が作成したアプリケーションが配置されるようにした上で、
> Atmark Distをmakeすると、途上でmake romfsが呼ばれて、自動的に必要なクロス開発用の
> ライブラリがATDE5内(/usr/arm-linux-gnueabihf/lib以下等)から、romfs以下の/usr/lib等に
> 取り込まれます。makeの最後に make imageが呼ばれて romfsディレクトリは、そのまま、
> romfs,img.gz になります。

 了解しました。
 本日確認致します。

> opensslのクロス開発用のライブラリ(末尾にcrossという名前の付いたもの)は、
> ATDE5にインストール済みです。
> 下記のようにして、dpkgで調べる事ができます。

 上記につきましても、本日確認致します。

 ご回答ありがとうございました。

at_ohsawaさん

 近藤です。

 確認が遅くなり、申し訳ございません。

> > atmark-dist/romfsに近藤様が作成したアプリケーションが配置されるようにした上で、
> > Atmark Distをmakeすると、途上でmake romfsが呼ばれて、自動的に必要なクロス開発用の
> > ライブラリがATDE5内(/usr/arm-linux-gnueabihf/lib以下等)から、romfs以下の/usr/lib等に
> > 取り込まれます。makeの最後に make imageが呼ばれて romfsディレクトリは、そのまま、
> > romfs,img.gz になります。

 上記の件ですが、atmark-dist-20140602/romfsの下に、私が作成したソースファイルをおいて、
makeしたのですが、libssl関係のライブラリが、romfs/usr/libの下に取り込まれていないようです。

 確認ですが、makeするときにromfsの直下に、クロスライブラリを呼ぶソースファイルをおかなけ
れば、いけないのでしょうか。

 私の作成しているプログラムの規模が大きく、いくつかのディレクトリに分かれてソースファイル
ディレクトリを作成しているため、クロスライブラリを呼ぶソースをすべてromfsの直下には、おい
ていません。
 実際にクロスライブラリを呼ぶソースファイルは、3階層以上深いディレクトリにあります。

 以上、お忙しいとは思いますが、ご協力よろしくお願い致します。

at_makoto.harada

2014年8月25日 18時30分

原田です。

> 確認ですが、makeするときにromfsの直下に、クロスライブラリを呼ぶソースファイルをおかなけ
>れば、いけないのでしょうか。

atmark-dist/romfs以下には、ソースファイルを配置する必要はありません。
正しい手順としては、製品マニュアルの以下の章を参考に、atmark-distにアプリを組み込んで頂く必要があります。

13.2. Atmark Distにユーザーオリジナルアプリケーションを組み込む
http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

一時的に試したい場合は、ATDE5環境でアプリをクロスビルドした後、
生成されたバイナリファイルをatmark-dist/romfs以下に配置し、
[ATDE5 ~/atmark-dist/]# make romfs
[ATDE5 ~/atmark-dist/]# make images
としてみてください
うまくいけば、ATDE5の環境から自動的に必要なライブラリがromfs以下に取り込まれます。

(補足)
atmark-dist-20130704以降のバージョンでは、
[ATDE5 ~/atmark-dist/]# make
を実行すると、preromfsターゲットが実行され、romfs以下の内容を全てクリーンした後
ビルドを実行する仕様となっています。
(この仕様に不都合がある場合は、atmark-dist/Makefile内のpreromfsターゲットを
一時的に編集するなどしてみてください。)

    --- a/Makefile
    +++ b/Makefile
    @@ -254,7 +254,7 @@ romfs_auto_strip = \
            fi
 
     preromfs:
    -       -rm -rf $(ROMFSDIR)
    +#      -rm -rf $(ROMFSDIR)
 

原田さん

 近藤です。

 マニュアルをよく読んでいなかったことで、ご迷惑をおかけしました。

> 一時的に試したい場合は、ATDE5環境でアプリをクロスビルドした後、
> 生成されたバイナリファイルをatmark-dist/romfs以下に配置し、
> [ATDE5 ~/atmark-dist/]# make romfs
> [ATDE5 ~/atmark-dist/]# make images
> としてみてください
> うまくいけば、ATDE5の環境から自動的に必要なライブラリがromfs以下に取り込まれます。

 上記の部分のクロスコンパイル件ですが、ubuntu12.04LTS上にクロスコンパイル環境を構築する際、
足りないモジュールを"sudo apt-get install"で追加しているのですが、ATDE5の環境では
"sudo apt-get install"が行えないため、ATDE5上にクロスコンパイル環境を構築することができません。

 ubuntu12.04LTSのクロスコンパイル環境で作成したバイナリファイルを、romfsの下に持ってくるのでは、
必要なライブラリをromfsの下に持ってくることはできないということでしょうか。

 800-evaでは、linux2.7のカーネルで必要なCONFIGデータ(例えば、IPv6やSCTPなど)だけビルドして
おいて、実行ファイルは800-evaにFTPでコピーし、必要なライブラリは800-eva上で、
"sudo apt-get install”していましたが、840でも同じようなことはできるのでしょうか。

 私が行おうとしていることは、CentOS上で動いているものを、Armadillo上で動かそうとしています。
単機能のインプリメントではないので、いろいろと試行錯誤して作業しているところです。

 以上、お忙しいとは思いますが、ご協力よろしくお願い致します。

at_makoto.harada

2014年8月26日 15時19分

原田です。

>  上記の部分のクロスコンパイル件ですが、ubuntu12.04LTS上にクロスコンパイル環境を構築する際、
> 足りないモジュールを"sudo apt-get install"で追加しているのですが、ATDE5の環境では
> "sudo apt-get install"が行えないため、ATDE5上にクロスコンパイル環境を構築することができません。

通常の環境では、ATDE5で sudo apt-get install が使えるはずなのですが。。。

>  ubuntu12.04LTSのクロスコンパイル環境で作成したバイナリファイルを、romfsの下に持ってくるのでは、
> 必要なライブラリをromfsの下に持ってくることはできないということでしょうか。

Ubuntuの環境で試したことはありませんが、上記を実施している実体は以下のスクリプトです。
動作しない場合は、echo文等を入れてみると何が問題かわかるかと思います。
atmark-techno/vendors/AtmarkTechno/Common/tools/lib-inst.sh

>  800-evaでは、linux2.7のカーネルで必要なCONFIGデータ(例えば、IPv6やSCTPなど)だけビルドして
> おいて、実行ファイルは800-evaにFTPでコピーし、必要なライブラリは800-eva上で、
> "sudo apt-get install”していましたが、840でも同じようなことはできるのでしょうか。
>
>  私が行おうとしていることは、CentOS上で動いているものを、Armadillo上で動かそうとしています。
> 単機能のインプリメントではないので、いろいろと試行錯誤して作業しているところです。
>

ArmadilloのユーザーランドにDebianを用いれば、容易にNative環境を構築できますよ。
sudo apt-get install 等で所望のアプリやライブラリを自由にインストールもできます。
http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

原田さん

 近藤です。

 毎度、お世話になります。

> >  上記の部分のクロスコンパイル件ですが、ubuntu12.04LTS上にクロスコンパイル環境を構築する際、
> > 足りないモジュールを"sudo apt-get install"で追加しているのですが、ATDE5の環境では
> > "sudo apt-get install"が行えないため、ATDE5上にクロスコンパイル環境を構築することができません。
>
> 通常の環境では、ATDE5で sudo apt-get install が使えるはずなのですが。。。

 ubuntu12.04LTS(64bit)上で、ATDE5-i386を動作させた場合、Proxy設定ができないため、
sudo apt-get installが実行できません。

>
> >  ubuntu12.04LTSのクロスコンパイル環境で作成したバイナリファイルを、romfsの下に持ってくるのでは、
> > 必要なライブラリをromfsの下に持ってくることはできないということでしょうか。
>
> Ubuntuの環境で試したことはありませんが、上記を実施している実体は以下のスクリプトです。
> 動作しない場合は、echo文等を入れてみると何が問題かわかるかと思います。
> atmark-techno/vendors/AtmarkTechno/Common/tools/lib-inst.sh

 上記の件、確認してみます。

> ArmadilloのユーザーランドにDebianを用いれば、容易にNative環境を構築できますよ。
> sudo apt-get install 等で所望のアプリやライブラリを自由にインストールもできます。
> http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

 上記の件、了解しました。
 Armadillo-840のユーザランドにこだわらず、Debianの環境で行うほうが早いようなので、
そちらを試してみます。

 以上、ご協力ありがとうございます。

大澤です。
>  ubuntu12.04LTS(64bit)上で、ATDE5-i386を動作させた場合、Proxy設定ができないため、

aptは http_proxy と ftp_proxy 環境変数を設定しておけば、プロキシサーバーを使ってファイルを
取ってきてくれますよ。

[ATDE ~]$ export http_proxy=proxy.server.address:8000
[ATDE ~]$ export ftp_proxy=proxy.server.address:8000
[ATDE ~]$ sudo apt-get update
[ATDE ~]$ sudo apt-get install xxxxxx

大澤さん

 近藤です。

 毎度、お世話になります。

> aptは http_proxy と ftp_proxy 環境変数を設定しておけば、プロキシサーバーを使ってファイルを
> 取ってきてくれますよ。

 上記の設定を行っており、exportコマンドで設定内容を確認していますが、sudo apt-get update、
sudo apt-get installともに、サーバに接続できない状態です。

 pingは通るのですが。。。。

 以上、ご報告まで。