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!, то всё ОК.