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のパスを設定するなど対応してみましたが、数珠つなぎで別のエラーが発生してしまいます。
解決方法についてご教授頂けないでしょうか。
以上、よろしくお願いいたします。
コメント
kasawa.ms
at_takashi.sasayama
笹山です。
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用ビルドパッチ |
kasawa.ms
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/
ご報告有難うございました。