CSSU-thumb toolchain setup (gcc4.7.2-linaro)
m |
(Added Errors I faced and how to solve them.) |
||
(15 intermediate revisions not shown) | |||
Line 1: | Line 1: | ||
This document describes how to setup the CSSU-thumb toolchain (gcc4.7.2-linaro) in scratchbox. | This document describes how to setup the CSSU-thumb toolchain (gcc4.7.2-linaro) in scratchbox. | ||
+ | |||
+ | |||
+ | ''GCC 4.7.2 does '''not''' produce thumb binaries by default, you should pass -mthumb if you want thumb resulting executables! without -mthumb it produces regular ARM ELFs'' | ||
+ | |||
+ | |||
+ | 1. You need to have [http://wiki.maemo.org/Documentation/Maemo_5_Final_SDK_Installation ScratchBox] environment already set up. | ||
+ | |||
+ | 2. Download [http://maemo.merlin1991.at/cssu/develdebs/gcc-4.7.2_fremantle_armel/linaro-4.7-2012.07-fremantle-armv7a.tar.bz2 gcc-4.7.2-linaro toolchain] and extract it under /scratchbox/compilers (may need root privileges for extracting there) | ||
+ | tar xvf linaro-4.7-2012.07-fremantle-armv7a.tar.bz2 | ||
+ | |||
+ | 3. Create new ScratchBox target FREMANTLE_ARMEL_GCC472 | ||
+ | |||
+ | - Login to ScratchBox | ||
+ | |||
+ | $ /scratchbox/login | ||
+ | |||
+ | - Create new ScratchBox target | ||
+ | |||
+ | [sbox->:~]sb-conf st FREMANTLE_ARMEL_GCC472 -c linaro-4.7-2012.07-fremantle-armv7a -d qemu:perl:debian-etch:doctools:svn:git -t qemu-arm-sb | ||
+ | |||
+ | replace debian-etch with debian-squeeze if you use ScratchBox Hathor release | ||
+ | |||
+ | [sbox->:~]sb-conf se FREMANTLE_ARMEL_GCC472 | ||
+ | |||
+ | [sbox-FREMANTLE_ARMEL_GCC472: ~] > sb-conf rs maemo-sdk-rootstrap_5.0_20.2010.36-2_armel.tgz | ||
+ | |||
+ | [sbox-FREMANTLE_ARMEL_GCC472: ~] > sb-conf in -edL | ||
+ | |||
+ | [sbox-FREMANTLE_ARMEL_GCC472: ~] > dpkg -i /scratchbox/compilers/linaro-4.7-2012.07-fremantle-armv7a/packages/libfakeroot_1.14.4-0+sb1_armel.deb | ||
+ | |||
+ | [sbox-FREMANTLE_ARMEL_GCC472: ~] > apt-get update | ||
+ | [sbox-FREMANTLE_ARMEL_GCC472: ~] > fakeroot apt-get install maemo-sdk-debug | ||
+ | |||
+ | - Accept [http://tablets-dev.nokia.com/eula/index.php Maemo5 SDK EULA] and copy the URL. Add nokia-binaries repository URL to /etc/apt/sources.list | ||
+ | |||
+ | [sbox-FREMANTLE_ARMEL_GCC472: ~] >apt-get update | ||
+ | [sbox-FREMANTLE_ARMEL_GCC472: ~] >fakeroot apt-get install nokia-binaries nokia-apps | ||
+ | |||
+ | [sbox-FREMANTLE_ARMEL_GCC472: ~] >rm -rf /targets/FREMANTLE_ARMEL_GCC472/opt | ||
+ | [sbox-FREMANTLE_ARMEL_GCC472: ~] >mkdir /targets/FREMANTLE_ARMEL_GCC472/opt | ||
+ | |||
+ | - Download ScratchBox errata dependency provider package [http://maemo.merlin1991.at/cssu/develdebs/gcc-4.7.2_fremantle_armel/sb-thumb-errata-provider_0.1-1_armel.deb sb-thumb-errata-provider_0.1-1_armel.deb] and install it | ||
+ | |||
+ | dpkg -i sb-thumb-errata-provider_0.1-1_armel.deb | ||
+ | |||
+ | - Add CSSU-testing and CSSU-thumb repos to your /etc/apt/sources.list | ||
+ | |||
+ | echo "deb http://repository.maemo.org/community-testing/ fremantle free non-free" >> /etc/apt/sources.list | ||
+ | echo "deb-src http://repository.maemo.org/community-testing/ fremantle free" >> /etc/apt/sources.list | ||
+ | |||
+ | echo "deb http://maemo.merlin1991.at/cssu/community-thumb/ fremantle free non-free" >> /etc/apt/sources.list | ||
+ | echo "deb-src http://maemo.merlin1991.at/cssu/community-thumb/ fremantle free" >> /etc/apt/sources.list | ||
+ | |||
+ | Remove unneeded package maemo-core-debug | ||
+ | apt-get remove maemo-core-debug | ||
+ | |||
+ | Upgrade your target to latest CSSU-thumb | ||
+ | |||
+ | [sbox-FREMANTLE_ARMEL_GCC472: ~] >apt-get update | ||
+ | [sbox-FREMANTLE_ARMEL_GCC472: ~] >fakeroot apt-get upgrade | ||
+ | |||
+ | '''IF ERROR''' When you now get an error the next step will show how to solve this, otherwise go to the step where libstdc++6 get installed. | ||
+ | |||
+ | Errors were encountered while processing: /var/cache/apt/archives/libssl0.9.8-dbg_0.9.8zh-1+maemo1+0m5+0cssu0_armel.deb | ||
+ | |||
+ | '''IF ERROR''' Solve it with otherwise go next step. | ||
+ | |||
+ | fakeroot apt-get -f install | ||
+ | |||
+ | '''IF ERROR''' Next errors will pop up. | ||
+ | |||
+ | Sub-process dpkg returned an error code (1) | ||
+ | Setting up libgtk2.0-0 (2:2.14.7-1maemo34+0cssu2+thumb0) ... | ||
+ | qemu: uncaught target signal 11 (Segmentation fault) - core dumped | ||
+ | dpkg: error processing libgtk2.0-0 (--configure): | ||
+ | subprocess installed post-installation script returned error exit status 126 | ||
+ | |||
+ | '''IF ERROR''' Solve it by editing following file: | ||
+ | |||
+ | vi /var/lib/dpkg/info/libgtk2.0-0.postinst | ||
+ | |||
+ | '''IF ERROR''' The command in the postinst script could not run, so we will comment out the following lines. | ||
+ | |||
+ | #if [ "$1" = configure ]; then | ||
+ | # Regenerate theme caches which may need updating after gtk changes | ||
+ | # if command -v hildon-theme-recache-all >/dev/null 2>&1; then | ||
+ | # hildon-theme-recache-all | ||
+ | # fi | ||
+ | #fi | ||
+ | |||
+ | '''IF ERROR''' There is another script which fails. | ||
+ | |||
+ | vi /var/lib/dpkg/info/libgtk2.0-bin.postinst | ||
+ | |||
+ | '''IF ERROR''' So we will comment out the following lines. | ||
+ | |||
+ | #/usr/sbin/update-gtk-immodules | ||
+ | #/usr/sbin/update-gdkpixbuf-loaders | ||
+ | |||
+ | '''IF ERROR''' Now fix it. | ||
+ | |||
+ | fakeroot apt-get -f install | ||
+ | |||
+ | Download and install [http://maemo.merlin1991.at/cssu/develdebs/gcc-4.7.2_fremantle_armel/packages/libstdc%2b%2b6-dev_4.7.2-0%2bcssu0_armel.deb libstdc++6-dev_4.7.2-0+cssu0_armel.deb] | ||
+ | dpkg -i libstdc++6-dev_4.7.2-0+cssu0_armel.deb | ||
+ | |||
+ | ''It can complain about libstdc++6 on system is 4.2.1-4maemo13+0m5.'' | ||
+ | |||
+ | |||
+ | Create FREMANTLE_ARMEL_GCC472.environment in your /targets directory | ||
+ | |||
+ | echo "export DEB_BUILD_OPTIONS=maemo-launcher,thumb,vfp" > /targets/FREMANTLE_ARMEL_GCC472.environment | ||
+ | echo "export PIXMAN_DISABLE=arm-neon" >> /targets/FREMANTLE_ARMEL_GCC472.environment | ||
+ | |||
+ | Your target should be ok at that point. Make sure to reenter the target, so updated FREMANTLE_ARMEL_GCC472.environment to take effect | ||
+ | |||
+ | fakeroot apt-get -f install | ||
+ | |||
+ | ''can fix that by installing the proper libstdc++6 afterwards.'' | ||
+ | |||
+ | |||
+ | Interesting new flags can be: <nowiki>-mfpu=neon -ftree-vectorize -fgraphite -lto</nowiki> | ||
+ | |||
+ | The compiler will give the following warning: | ||
+ | /scratchbox/compilers/linaro-4.7-2012.07-fremantle-armv7a/bin/../lib/gcc/arm-none-linux-gnueabi/4.7.2/../../../../arm-none-linux-gnueabi/bin/ld: BFD (GNU Binutils) 2.22 assertion fail ../../../sources/binutils-2.22/bfd/elf32-arm.c:11467 | ||
+ | These warnings can be ignored. For some reason, the linker thinks that the object is hardfp, but as it is softfp the assertion fails. | ||
+ | |||
+ | '''ERROR ON UPGRADE''' A note I made. | ||
+ | |||
+ | fakeroot apt-get upgrade | ||
+ | fakeroot apt-get install libcurl3 | ||
+ | fakeroot apt-get install ke-recv | ||
+ | fakeroot apt-get install obexd | ||
+ | |||
+ | '''ERROR ON UPGRADE''' To install this clock-ui we need another resource. | ||
+ | |||
+ | echo "deb http://maemo.muarf.org/apt-mirror/mirror/downloads.maemo.nokia.com/fremantle/ssu/mr0 ./" >> /etc/apt/sources.list | ||
+ | |||
+ | fakeroot apt-get install clock-ui | ||
+ | |||
+ | |||
+ | |||
+ | [[Category:Documentation]] | ||
+ | [[Category:Fremantle]] | ||
+ | [[Category:Scratchbox]] | ||
+ | [[Category:Community]] |
Latest revision as of 19:32, 10 September 2019
This document describes how to setup the CSSU-thumb toolchain (gcc4.7.2-linaro) in scratchbox.
GCC 4.7.2 does not produce thumb binaries by default, you should pass -mthumb if you want thumb resulting executables! without -mthumb it produces regular ARM ELFs
1. You need to have ScratchBox environment already set up.
2. Download gcc-4.7.2-linaro toolchain and extract it under /scratchbox/compilers (may need root privileges for extracting there)
tar xvf linaro-4.7-2012.07-fremantle-armv7a.tar.bz2
3. Create new ScratchBox target FREMANTLE_ARMEL_GCC472
- Login to ScratchBox
$ /scratchbox/login
- Create new ScratchBox target
[sbox->:~]sb-conf st FREMANTLE_ARMEL_GCC472 -c linaro-4.7-2012.07-fremantle-armv7a -d qemu:perl:debian-etch:doctools:svn:git -t qemu-arm-sb
replace debian-etch with debian-squeeze if you use ScratchBox Hathor release
[sbox->:~]sb-conf se FREMANTLE_ARMEL_GCC472
[sbox-FREMANTLE_ARMEL_GCC472: ~] > sb-conf rs maemo-sdk-rootstrap_5.0_20.2010.36-2_armel.tgz
[sbox-FREMANTLE_ARMEL_GCC472: ~] > sb-conf in -edL
[sbox-FREMANTLE_ARMEL_GCC472: ~] > dpkg -i /scratchbox/compilers/linaro-4.7-2012.07-fremantle-armv7a/packages/libfakeroot_1.14.4-0+sb1_armel.deb
[sbox-FREMANTLE_ARMEL_GCC472: ~] > apt-get update [sbox-FREMANTLE_ARMEL_GCC472: ~] > fakeroot apt-get install maemo-sdk-debug
- Accept Maemo5 SDK EULA and copy the URL. Add nokia-binaries repository URL to /etc/apt/sources.list
[sbox-FREMANTLE_ARMEL_GCC472: ~] >apt-get update [sbox-FREMANTLE_ARMEL_GCC472: ~] >fakeroot apt-get install nokia-binaries nokia-apps
[sbox-FREMANTLE_ARMEL_GCC472: ~] >rm -rf /targets/FREMANTLE_ARMEL_GCC472/opt [sbox-FREMANTLE_ARMEL_GCC472: ~] >mkdir /targets/FREMANTLE_ARMEL_GCC472/opt
- Download ScratchBox errata dependency provider package sb-thumb-errata-provider_0.1-1_armel.deb and install it
dpkg -i sb-thumb-errata-provider_0.1-1_armel.deb
- Add CSSU-testing and CSSU-thumb repos to your /etc/apt/sources.list
echo "deb http://repository.maemo.org/community-testing/ fremantle free non-free" >> /etc/apt/sources.list echo "deb-src http://repository.maemo.org/community-testing/ fremantle free" >> /etc/apt/sources.list
echo "deb http://maemo.merlin1991.at/cssu/community-thumb/ fremantle free non-free" >> /etc/apt/sources.list echo "deb-src http://maemo.merlin1991.at/cssu/community-thumb/ fremantle free" >> /etc/apt/sources.list
Remove unneeded package maemo-core-debug
apt-get remove maemo-core-debug
Upgrade your target to latest CSSU-thumb
[sbox-FREMANTLE_ARMEL_GCC472: ~] >apt-get update [sbox-FREMANTLE_ARMEL_GCC472: ~] >fakeroot apt-get upgrade
IF ERROR When you now get an error the next step will show how to solve this, otherwise go to the step where libstdc++6 get installed.
Errors were encountered while processing: /var/cache/apt/archives/libssl0.9.8-dbg_0.9.8zh-1+maemo1+0m5+0cssu0_armel.deb
IF ERROR Solve it with otherwise go next step.
fakeroot apt-get -f install
IF ERROR Next errors will pop up.
Sub-process dpkg returned an error code (1) Setting up libgtk2.0-0 (2:2.14.7-1maemo34+0cssu2+thumb0) ... qemu: uncaught target signal 11 (Segmentation fault) - core dumped dpkg: error processing libgtk2.0-0 (--configure): subprocess installed post-installation script returned error exit status 126
IF ERROR Solve it by editing following file:
vi /var/lib/dpkg/info/libgtk2.0-0.postinst
IF ERROR The command in the postinst script could not run, so we will comment out the following lines.
#if [ "$1" = configure ]; then # Regenerate theme caches which may need updating after gtk changes # if command -v hildon-theme-recache-all >/dev/null 2>&1; then # hildon-theme-recache-all # fi #fi
IF ERROR There is another script which fails.
vi /var/lib/dpkg/info/libgtk2.0-bin.postinst
IF ERROR So we will comment out the following lines.
#/usr/sbin/update-gtk-immodules #/usr/sbin/update-gdkpixbuf-loaders
IF ERROR Now fix it.
fakeroot apt-get -f install
Download and install libstdc++6-dev_4.7.2-0+cssu0_armel.deb
dpkg -i libstdc++6-dev_4.7.2-0+cssu0_armel.deb
It can complain about libstdc++6 on system is 4.2.1-4maemo13+0m5.
Create FREMANTLE_ARMEL_GCC472.environment in your /targets directory
echo "export DEB_BUILD_OPTIONS=maemo-launcher,thumb,vfp" > /targets/FREMANTLE_ARMEL_GCC472.environment echo "export PIXMAN_DISABLE=arm-neon" >> /targets/FREMANTLE_ARMEL_GCC472.environment
Your target should be ok at that point. Make sure to reenter the target, so updated FREMANTLE_ARMEL_GCC472.environment to take effect
fakeroot apt-get -f install
can fix that by installing the proper libstdc++6 afterwards.
Interesting new flags can be: -mfpu=neon -ftree-vectorize -fgraphite -lto
The compiler will give the following warning:
/scratchbox/compilers/linaro-4.7-2012.07-fremantle-armv7a/bin/../lib/gcc/arm-none-linux-gnueabi/4.7.2/../../../../arm-none-linux-gnueabi/bin/ld: BFD (GNU Binutils) 2.22 assertion fail ../../../sources/binutils-2.22/bfd/elf32-arm.c:11467
These warnings can be ignored. For some reason, the linker thinks that the object is hardfp, but as it is softfp the assertion fails.
ERROR ON UPGRADE A note I made.
fakeroot apt-get upgrade fakeroot apt-get install libcurl3 fakeroot apt-get install ke-recv fakeroot apt-get install obexd
ERROR ON UPGRADE To install this clock-ui we need another resource.
echo "deb http://maemo.muarf.org/apt-mirror/mirror/downloads.maemo.nokia.com/fremantle/ssu/mr0 ./" >> /etc/apt/sources.list
fakeroot apt-get install clock-ui
- This page was last modified on 10 September 2019, at 19:32.
- This page has been accessed 31,611 times.