openSUSE:OpenSUSE ARM 動作情報
目次
openSUSE:Factory:ARM での作業方法
openSUSE Build Service には openSUSE:Factory に対する複製 (シャドウ) プロジェクトが存在していて、こちらで ARM アーキテクチャ向けの全パッケージを構築しています。
ARM アーキテクチャでは、下記の 2 種類のバイナリを構築しています:
- armv6l/armv6hl (ハードウエア浮動小数点を使用するバイナリ)
- armv7l/armv7hl (ハードウエア浮動小数点を使用するバイナリ)
現時点では、すべてのパッケージをサーバ内のネイティブハードウエア上で構築しています。もちろん osc 経由で qemu を利用することで構築することもできます。 qemu を利用する場合は、 qemu のリポジトリに対してパッケージを構築する必要があります。
パッケージ hello に対する修正を行ないたい場合は、下記のようにコマンドを実行してください:
osc bco openSUSE:Factory hello cd home:<ユーザ名>:branches:<ブランチしたプロジェクトの名前>/hello
その後必要な箇所を修正してテストビルドを行ない、 Build Service にパッケージを送信してください。なお、ローカルでの構築は、 ARM ハードウエアもしくは x86_64 システム (qemu-linux-user を使用) でのみ実施することができます:
osc build --alternative-project=openSUSE:Factory:ARM qemu armv7l hello.spec osc vc # ユーザ向けの変更履歴の編集 osc ci # チェックイン osc sr # devel プロジェクトへの送信 (これが完了すると、 Factory にも送信されるようになります)
ビルドフラグ
GCC
GCC は下記のオプションで構築されています:
armv6
バージョン: FactoryGCC 4.8 設定オプション:
../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,fortran,obj-c++,java --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.8 --enable-ssp --disable-libssp --disable-plugin --with-bugurl=http://bugs.opensuse.org/ '--with-pkgversion=SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --program-suffix=-4.8 --enable-linux-futex --without-system-libunwind --with-arch=armv6zk --with-tune=arm1176jzf-s --with-float=hard --with-abi=aapcs-linux --with-fpu=vfp --disable-sjlj-exceptions --build=armv6hl-suse-linux-gnueabi
armv7
バージョン: FactoryGCC 4.8 設定オプション:
../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,fortran,obj-c++,java --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.8 --enable-ssp --disable-libssp --disable-plugin --with-bugurl=http://bugs.opensuse.org/ '--with-pkgversion=SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --program-suffix=-4.8 --enable-linux-futex --without-system-libunwind --with-arch=armv7-a --with-tune=cortex-a15 --with-float=hard --with-abi=aapcs-linux --with-fpu=vfpv3-d16 --disable-sjlj-exceptions --build=armv7hl-suse-linux-gnueabi
バージョン: 12.3GCC 4.7 設定オプション:
../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,fortran,obj-c++,java --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.7 --enable-ssp --disable-libssp --disable-libitm --disable-plugin --with-bugurl=http://bugs.opensuse.org/ '--with-pkgversion=SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --program-suffix=-4.7 --enable-linux-futex --without-system-libunwind --with-arch=armv7-a --with-tune=cortex-a9 --with-float=hard --with-abi=aapcs-linux --with-fpu=vfpv3-d16 --disable-sjlj-exceptions --build=armv7hl-suse-linux-gnueabi
バージョン: 12.2GCC 4.7 設定オプション:
../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,fortran,obj-c++,java --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.7 --enable-ssp --disable-libssp --disable-libitm --disable-plugin --with-bugurl=http://bugs.opensuse.org/ '--with-pkgversion=SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --program-suffix=-4.7 --enable-linux-futex --without-system-libunwind --with-arch=armv7-a --with-tune=cortex-a9 --with-float=hard --with-abi=aapcs-linux --with-fpu=vfpv3-d16 --disable-sjlj-exceptions --build=armv7hl-suse-linux-gnueabi
RPM_OPT_FLAGS
armv6
バージョン: FactoryRPM_OPT_FLAGS:
-O2 -g -march=armv6 -mfloat-abi=hard -mabi=aapcs-linux -U_FORTIFY_SOURCE
armv7
バージョン: FactoryRPM_OPT_FLAGS:
-fmessage-length=0 -O2 -D_FORTIFY_SOURCE=2 -funwind-tables -fasynchronous-unwind-tables -g -U_FORTIFY_SOURCE
バージョン: 12.3RPM_OPT_FLAGS:
-fmessage-length=0 -O2 -D_FORTIFY_SOURCE=2 -funwind-tables -fasynchronous-unwind-tables -g -U_FORTIFY_SOURCE
バージョン: 12.2RPM_OPT_FLAGS:
-fmessage-length=0 -O2 -D_FORTIFY_SOURCE=2 -funwind-tables -fasynchronous-unwind-tables -g -U_FORTIFY_SOURCE
主な問題
- openSUSE 12.3 もしくは openSUSE:Tools プロジェクトが提供する osc, build, build-initvm を使用しなければならない問題があります。
何が構築できていないのかを調べたい場合は、 モニタページ をご覧ください。
パッケージを修正したい場合は、標準プロジェクトである openSUSE:Factory 宛にお送りください。 openSUSE:Factory:ARM は openSUSE:Factory にリンクしていて、そこから提供されるコードを利用しているためです。