Armadilloフォーラム

[Q] libstdc++.so.6のインストール方法

intec_atird

2015年4月30日 10時37分

石田と申します。

先週届いたArmadillo-IoTで、libstdc++.so.6を使用したいのですが、標準では入っておらず、別途インストールする方法をお教え頂けると助かります。

# uname -a
Linux armadillo-iotg 2.6.26-at22 #1 PREEMPT Tue Jan 27 15:55:20 JST 2015 armv5tejl GNU/Linux

製品に含まれていたDVD-ROMにクロス開発用のdebファイルが含まれていましたが、Armadillo-IoTにインストールすべきライブラリが不明でした。

外部サイトから入手、インストールすべきファイルでしたら、方法を教えて下さい。

宜しくお願い致します。

コメント

at_kojiro.yamada

2015年4月30日 14時44分

> 先週届いたArmadillo-IoTで、libstdc++.so.6を使用したいのですが、標準で
> は入っておらず、別途インストールする方法をお教え頂けると助かります。

次の手順で、Armadillo-IoTのユーザーランドに libstdc++.so.6を
インストールする事ができます。

libstdc++.so.6を使用するソフトウェアをOut of Treeコンパイルしていただけ
れば、自動的にユーザーランドイメージにlibstdc++.so.6が組み込まれます。

Out of Treeコンパイルについては、以下のマニュアルをご覧ください。

atmark-dist 開発者ガイド
第10章 新規アプリケーションの追加方法 - 「10.1. Out of Treeコンパイル」
http://manual.atmark-techno.com/dist/atmark-dist_developers_guide_ja-1…

また、ソースからビルドしなくても、
事前にビルドしておいたatmark-distで、atmark-dist/romfs/以下に実行ファイ
ルをコピーして、"make romfs image"を実行することで、
libstdc++.so.6が組み込まれたユーザーランドイメージを作成できます。

この方法の場合、"make"を実行すると、
atmark-dist/romfs/以下にコピーした実行ファイルが削除されるため、
そのたびに再度コピーして"make romfs image"を実行する必要があります。

# 事前にビルドしておく
[ATDE5]$ cd atmark-dist-[VERSION]
[ATDE5 ~/atmark-dist-[VERSION]]$ make
 :
 :
# ユーザーランドイメージに実行ファイル(とライブラリ)を組み込む
[ATDE5 ~/atmark-dist-[VERSION]]$ cp binary atmark-dist-[VERSION]/romfs/bin/
[ATDE5 ~/atmark-dist-[VERSION]]$ make romfs image

> 製品に含まれていたDVD-ROMにクロス開発用のdebファイルが含まれていまし
> たが、Armadillo-IoTにインストールすべきライブラリが不明でした。

それらは、Armadilloにインストールするパッケージではなく、クロス開発環境
を作成する際に、PCにインストールするクロスパッケージです。
ATDEにはインストール済みですので、気にしなくて良いです。

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

こちらでは、あるOSSのJAR(Java)に含まれているJNIのshared libraryから、libstdc++.so.6を参照しようとして見つからないと言われました。このOSSには変更を加えずに、Armadillo-IoTにshared libraryをインストールすることで対処できないか、と考えています。

何か手立てがございましたら、教えて頂けると助かります。

宜しくお願い致します。

> > 先週届いたArmadillo-IoTで、libstdc++.so.6を使用したいのですが、標準で
> > は入っておらず、別途インストールする方法をお教え頂けると助かります。
>
> 次の手順で、Armadillo-IoTのユーザーランドに libstdc++.so.6を
> インストールする事ができます。
>
> libstdc++.so.6を使用するソフトウェアをOut of Treeコンパイルしていただけ
> れば、自動的にユーザーランドイメージにlibstdc++.so.6が組み込まれます。
>
> Out of Treeコンパイルについては、以下のマニュアルをご覧ください。
>
> atmark-dist 開発者ガイド
> 第10章 新規アプリケーションの追加方法 - 「10.1. Out of Treeコンパイル」
> http://manual.atmark-techno.com/dist/atmark-dist_developers_guide_ja-1…
>
> また、ソースからビルドしなくても、
> 事前にビルドしておいたatmark-distで、atmark-dist/romfs/以下に実行ファイ
> ルをコピーして、"make romfs image"を実行することで、
> libstdc++.so.6が組み込まれたユーザーランドイメージを作成できます。
>
> この方法の場合、"make"を実行すると、
> atmark-dist/romfs/以下にコピーした実行ファイルが削除されるため、
> そのたびに再度コピーして"make romfs image"を実行する必要があります。
>
>

> # 事前にビルドしておく
> [ATDE5]$ cd atmark-dist-[VERSION]
> [ATDE5 ~/atmark-dist-[VERSION]]$ make
>  :
>  :
> # ユーザーランドイメージに実行ファイル(とライブラリ)を組み込む
> [ATDE5 ~/atmark-dist-[VERSION]]$ cp binary atmark-dist-[VERSION]/romfs/bin/
> [ATDE5 ~/atmark-dist-[VERSION]]$ make romfs image
> 

>
> > 製品に含まれていたDVD-ROMにクロス開発用のdebファイルが含まれていまし
> > たが、Armadillo-IoTにインストールすべきライブラリが不明でした。
>
> それらは、Armadilloにインストールするパッケージではなく、クロス開発環境
> を作成する際に、PCにインストールするクロスパッケージです。
> ATDEにはインストール済みですので、気にしなくて良いです。
>

at_kojiro.yamada

2015年5月1日 19時33分

> こちらでは、あるOSSのJAR(Java)に含まれているJNIのshared libraryから、
> libstdc++.so.6を参照しようとして見つからないと言われました。

Atmark Distでは、atmark-dist/romfs/以下の「バイナリ」の依存関係を解
決するので、「zipファイル」であるJAR内部に含まれる実行ファイルは依存
関係を解決できません。
そのため、依存しているライブラリ(libstdc++.so.6)もインストールされません。

> 何か手立てがございましたら、教えて頂けると助かります。

依存しているライブラリがlibstdc++.so.6だけとわかっているなら、
単にlibstdc++.so.6をatmark-dist/romfs/lib/にコピーするだけでも良いです。

Armadillo-IoTG-Stdプロダクト用に
ユーザーランドのビルド時にlibstdc++.so.6をインストールするパッチを
作成しましたので、試してみてください。

■パッチの当て方
まず、添付したパッチをダウンロードし、atmark-dist-[VERSION]の直下で
以下のコマンドを実行してください。

[ATDE5 ~/atmark-dist-[VERSION]]$ patch -p1 < inst-libstdc++.patch

■ビルド方法
製品マニュアルの以下の項目をご覧ください。

Armadillo-IoT ゲートウェイ スタンダードモデル製品マニュアル
「11.1. Linuxカーネル/ユーザーランドをビルドする」
http://manual.atmark-techno.com/armadillo-iot/armadillo-iotg-std_produc…

ファイル ファイルの説明
inst-libstdc++.patch ユーザーランドのビルド時にlibstdc++.so.6をインストールするためのパッチ