Armadilloフォーラム

atmark-distのSTLport

kasawa.ms

2015年4月10日 15時41分

atmark-distに格納されているSTLportを使用しようとビルドを実施したのですが、
以下のようにビルドエラーが発生してしまいます

make[2]: ディレクトリ `/home/atmark/work/atmark-dist-20150318/lib/STLport' に入ります
make -f uclinux-dist.mak -C src
make[3]: ディレクトリ `/home/atmark/work/atmark-dist-20150318/lib/STLport/src' に入ります
arm-linux-gnueabihf-g++  -fexceptions -nostdinc -nostdlib -nostdinc++ -I../stlport -I/home/atmark/work/atmark-dist-20150318/include -idirafter /home/atmark/work/atmark-dist-20150318/include/include -Wall -W -Wno-sign-compare -Wno-unused -Wno-uninitialized -ftemplate-depth-32 -frtti -D_STLP_UNIX=1 -O2 -fPIC dll_main.cpp -c -o ../lib/obj/GCCarm/ReleaseD/dll_main.o
In file included from stlport_prefix.h:28:0,
                 from dll_main.cpp:29:
../stlport/ctime:27:41: fatal error: ../include/time.h: そのようなファイルやディレクトリはありません
compilation terminated.
make[3]: *** [../lib/obj/GCCarm/ReleaseD/dll_main.o] エラー 1

time.hのパスを設定するなど対応してみましたが、数珠つなぎで別のエラーが発生してしまいます。
解決方法についてご教授頂けないでしょうか。

以上、よろしくお願いいたします。

コメント

at_takashi.sasayama

2015年4月13日 19時38分

笹山です。

> atmark-distに格納されているSTLportを使用しようとビルドを実施したのですが、
> 以下のようにビルドエラーが発生してしまいます

申し訳ございません。
同様のエラーが発生することを確認できました。
改修作業を行いたく思います。

また atmark-dist に含まれている STLport 4.6 より新しいバージョンが公開されていますので、
バージョンアップデートも検討したいと思います。

STLport v5.2.1
http://sourceforge.net/projects/stlport/

ご報告有難うございました。

ご返信ありがとうございます。
また、改修して頂けるということでありがとうございます。

改修お待ちしております。

at_takashi.sasayama

2015年4月15日 16時18分

笹山です。

STLport-5.2.1 が ATDE5 でビルドできましたので以下に手順を記載します。

■ STLport-5.2.1 ソースの取得

以下のサイトから STLport-5.2.1.tar.bz2 をダウンロードし、ATDE5 上に格納します。

STLport
http://sourceforge.net/projects/stlport/

ダウンロードしたファイルは以下のコマンドで展開します。

tar jxf STLport-5.2.1.tar.bz2

■ STLport-5.2.1 に ATDE5 でビルドする為のパッチを適用

添付ファイル atde5-STLport-5.2.1-build.patch は、
ATDE5 で STLport-5.2.1 を Armadillo-810/840 (armhf) 用にビルドする為のパッチです。

パッチは以下のコマンドで適用できます。

cd STLport-5.2.1
patch -p1 < atde5-STLport-5.2.1-build.patch

パッチ適用後に、ビルド用のスクリプト build.sh に実行権限を付与して実行します。

chmod +x build.sh
./build.sh

■ ライブラリ、ヘッダーファイルの配置

ビルド完了後にライブラリとヘッダーファイルを各所に配置します。

sudo cp build/lib/obj/arm-linux-gnueabihf-gcc/so/libstlport.so* /usr/arm-linux-gnueabihf/lib/
sudo ldconfig
 
sudo cp -R stlport /usr/arm-linux-gnueabihf/include/

■ サンプルプログラムのクロスビルド

動作確認用のサンプルプログラム hello.cpp を作成します。

#include <iostream>
#include <string>
using namespace std;
 
int main() {
    string s("Hello");
    cout << s << endl;
    return 0;
}

hello.cpp をクロスビルドします。

arm-linux-gnueabihf-g++ -lstlport -lpthread -I/usr/arm-linux-gnueabihf/include/stlport hello.cpp -o hello

■ ユーザーランドに STLport ライブラリを追加

atmark-dist に STLport ライブラリを追加します。
以下は Armadillo-840の場合です。

mkdir ~/atmark-dist/vendors/AtmarkTechno/Armadillo-840/usr/lib
cp build/lib/obj/arm-linux-gnueabihf-gcc/so/libstlport.so* ~/atmark-dist/vendors/AtmarkTechno/Armadillo-840/usr/lib

atmark-dist をビルドしユーザーランドイメージを作成します。
作成されたイメージで Armadillo を起動します。

■ サンプルプログラムの動作確認

Armadillo 上に先にクロスビルドした hello をダウンロードします。
そして実行権限を付与して実行します。

chmod +x hello
./hello
Hello

■ 補足

Debian での STLport サポート状況なのですが、
wheezy ではパッケージが提供されなくなっていたり、
パッケージが提供されていた squeeze でも arm 版 は提供されていません。

参考情報:Package: libstlport5.2 (5.2.1-5)
https://packages.debian.org/squeeze/libstlport5.2

STLport が必須でなければ ATDE5 に標準でインストールされている
GNU Standard C++ Library v3 (for cross-compiling) や、
boost などのライブラリをインストールして使用するのも良いかもしれません。

atmark-dsit STLport のビルドエラーは修正方法を検討し、
今後の製品アップデートにて対応したいと思います。

ファイル ファイルの説明
atde5-STLport-5.2.1-build.patch STLport-5.2.1 ATDE5用ビルドパッチ

笹山様

ATDE5のでビルド手順展開ありがとうございます。
こちらの環境でもビルドすることができました。

作成したSTLPortを使用して、作業を進めていきたいと思います。