Fork me on GitHub

6. Установка SCRATCHBOX2

Scratchbox2

is a cross-compilation toolkit designed to make embedded Linux application development easier. It also provides a full set of tools to integrate and cross-compile an entire Linux distribution.

вот что я рекомендую сделать

скрипт со следующим содержимым, здесь я указываю явно Jolla-2.0.5.6-Sailfish_SDK_Target-armv7hl.tar.bz2

если изменится версия, то рекомендую смотреть ссылки на sb2 в файле http://releases.sailfishos.org/sdk/latest/targets/targets.json

cd $HOME
SFE_SB2_TARGET=$MER_ROOT/targets/$VENDOR-$DEVICE-$PORT_ARCH
# TARBALL_URL=http://releases.sailfishos.org/sdk/latest/targets/targets.json
# TARBALL_URL=http://releases.sailfishos.org/sdk/targets-1611/Jolla-2.0.5.6-Sailfish_SDK_Target-armv7hl.tar.bz2
# TARBALL=$(curl $TARBALL_URL)
curl -O http://releases.sailfishos.org/sdk/targets-1611/Jolla-2.0.5.6-Sailfish_SDK_Target-armv7hl.tar.bz2
sudo mkdir -p $SFE_SB2_TARGET
sudo tar --numeric-owner -pxjf $(basename Jolla-2.0.5.6-Sailfish_SDK_Target-armv7hl.tar.bz2) -C $SFE_SB2_TARGET
sudo chown -R $USER $SFE_SB2_TARGET
cd $SFE_SB2_TARGET
grep :$(id -u): /etc/passwd >> etc/passwd
grep :$(id -g): /etc/group >> etc/group
sb2-init -d -L "--sysroot=/" -C "--sysroot=/" -c /usr/bin/qemu-arm-dynamic -m sdk-build  -n -N -t / $VENDOR-$DEVICE-$PORT_ARCH /opt/cross/bin/$PORT_ARCH-meego-linux-gnueabi-gcc
sb2 -t $VENDOR-$DEVICE-$PORT_ARCH -m sdk-install -R rpm --rebuilddb
sb2 -t $VENDOR-$DEVICE-$PORT_ARCH -m sdk-install -R zypper ar -G http://repo.merproject.org/releases/mer-tools/rolling/builds/$PORT_ARCH/packages/ mer-tools-rolling
sb2 -t $VENDOR-$DEVICE-$PORT_ARCH -m sdk-install -R zypper ref --force
# install repo
# hadk
# sb2 -t $VENDOR-$DEVICE-$PORT_ARCH -m sdk-install -R zypper ar http://repo.merproject.org/obs/nemo:/devel:/hw:/common/sailfish_latest_armv7hl/ sfl

# sb2 -t $VENDOR-$DEVICE-$PORT_ARCH -m sdk-install -R zypper up

из официальной документации()

MERSDK $
hadk
cd $HOME
SFE_SB2_TARGET=$MER_ROOT/targets/$VENDOR-$DEVICE-$PORT_ARCH
TARBALL_URL=http://releases.sailfishos.org/sdk/latest/targets/targets.json
TARBALL=$(curl $TARBALL_URL | grep "$PORT_ARCH.tar.bz2" | cut -d\" -f4)
curl -O $TARBALL
sudo mkdir -p $SFE_SB2_TARGET
sudo tar --numeric-owner -pxjf $(basename $TARBALL) -C $SFE_SB2_TARGET
sudo chown -R $USER $SFE_SB2_TARGET
cd $SFE_SB2_TARGET
grep :$(id -u): /etc/passwd >> etc/passwd
grep :$(id -g): /etc/group >> etc/group
# Сообщение: collect2: cannot find 'ld' - можно пропустить это не важно

sb2-init -d -L "--sysroot=/" -C "--sysroot=/" -c /usr/bin/qemu-arm-dynamic -m sdk-build  -n -N -t / $VENDOR-$DEVICE-$PORT_ARCH /opt/cross/bin/$PORT_ARCH-meego-linux-gnueabi-gcc
sb2 -t $VENDOR-$DEVICE-$PORT_ARCH -m sdk-install -R rpm --rebuilddb
sb2 -t $VENDOR-$DEVICE-$PORT_ARCH -m sdk-install -R zypper ar -G http://repo.merproject.org/releases/mer-tools/rolling/builds/$PORT_ARCH/packages/ mer-tools-rolling
sb2 -t $VENDOR-$DEVICE-$PORT_ARCH -m sdk-install -R zypper ref --force

В последних релизах появилась новая зависимость и для неё необходимо добавить свой репозиторий

MERSDK $
hadk
sb2 -t $VENDOR-$DEVICE-$PORT_ARCH -m sdk-install -R zypper ar http://repo.merproject.org/obs/nemo:/devel:/hw:/common/sailfish_latest_armv7hl/ sfl
sb2 -t $VENDOR-$DEVICE-$PORT_ARCH -m sdk-install -R zypper up

​ Более подробно об этой ошибке тут

Проверка установленного SCRATCHBOX2, простой программой Hello,World!

MERSDK $
cd $HOME

сat > main.c << EOF
#include <stdlib.h>
#include <stdio.h>
int main(void) {
printf("Hello, world!\n");
return EXIT_SUCCESS;
}
EOF
sb2 -t $VENDOR-$DEVICE-$PORT_ARCH gcc main.c -o test

Запуск скомпилированной программы:

sb2 -t $VENDOR-$DEVICE-$PORT_ARCH ./test

Если вывело  Hello, world!, то всё ОК.

social