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を使う上で、根本的な間違いがございましたら、ご指摘ください。
コメント
sh_kondoh
近藤です。
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で調べる事ができます。
上記につきましても、本日確認致します。
ご回答ありがとうございました。
sh_kondoh
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
原田です。
> 確認ですが、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)
sh_kondoh
原田さん
近藤です。
マニュアルをよく読んでいなかったことで、ご迷惑をおかけしました。
> 一時的に試したい場合は、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
原田です。
> 上記の部分のクロスコンパイル件ですが、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…
sh_kondoh
原田さん
近藤です。
毎度、お世話になります。
> > 上記の部分のクロスコンパイル件ですが、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の環境で行うほうが早いようなので、
そちらを試してみます。
以上、ご協力ありがとうございます。
at_ohsawa
大澤です。
> 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
sh_kondoh
at_ohsawa
2014年8月21日 17時29分
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で調べる事ができます。