LINUX.ORG.RU

Сборка 32-х разрядного приложения в 64-х разрядной системе

 , , ,


0

1

Всем привет! Есть 32-х битное приложение (PCSX 2), которое я обычно собирал в deb-пакеты с помощью pbuilder. Сейчас мне нужно собрать статическую сборку. Но тащить кучу 32-х битных либ в систему не хочется. Пока единственным решением вижу виртуалку с 32-х битным линуксом. Есть идея заюзать контейнер с нужным окружением, но не знаю как это осуществить. В общем, думаю суть ясна. Подскажите, есть ли оптимальный способ?

debootstrap

anonymous ()

pbuilder не умеет в статическую сборку? Пропиши в сборочном скрипте нужные флаги и всё должно получиться автоматически.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

pbuilder не умеет в статическую сборку? Пропиши в сборочном скрипте нужные флаги и всё должно получиться автоматически.

Даже не слышал о таком. Вот мой конфиг:

UNSTABLE_CODENAME="unstable"
TESTING_CODENAME="testing"
STABLE_CODENAME="stable"
STABLE_BACKPORTS_SUITE="$STABLE_CODENAME-backports"
OLDSTABLE_CODENAME="oldstable"
DEBIAN_SUITES=($UNSTABLE_CODENAME, $TESTING_CODENAME, $STABLE_CODENAME $STABLE_BACKPORTS_SUITE $OLDSTABLE_CODENAME
    "sid" "stretch" "jessie" "wheezy")
UBUNTU_SUITES=("trusty" "vivid" "wily")
UBUNTU_MIRROR="mirror.yandex.ru"
DEBIAN_MIRROR="mirror.yandex.ru"
: ${DIST:="$(lsb_release --short --codename)"}
: ${ARCH:="$(dpkg --print-architecture)"}
COMPONENTS="main contrib non-free"
NAME="$DIST"
if [ -n "${ARCH}" ]; then
    NAME="$NAME-$ARCH"
    DEBOOTSTRAPOPTS=("--arch" "$ARCH" "${DEBOOTSTRAPOPTS[@]}")
fi

BASETGZ="/home/sunderland93/pbuilder/$NAME-base.tgz"
DISTRIBUTION="$DIST"
BUILDRESULT="/home/sunderland93/pbuilder/$DIST/result/"
APTCACHE="/home/sunderland93/pbuilder/$NAME/aptcache/"
BUILDPLACE="/home/sunderland93/pbuilder/build/"
if $(echo ${DEBIAN_SUITES[@]} | grep -q $DIST); then
    MIRRORSITE="http://$DEBIAN_MIRROR/debian/"
    COMPONENTS="main contrib non-free"
elif $(echo ${UBUNTU_SUITES[@]} | grep -q $DIST); then
        MIRRORSITE="http://$UBUNTU_MIRROR/ubuntu/"
        COMPONENTS="main restricted universe multiverse"
else
        echo "Unknown dist: @DIST"
        exit 1
fi

export DPKG_GENSYMBOLS_CHECK_LEVEL=4
USE_PDEBUILD_INTERNAL=yes
HOOKDIR="/var/cache/pbuilder/hook.d/"

Sunderland93 ★★★★★ ()
Последнее исправление: Sunderland93 (всего исправлений: 1 )
Ответ на: комментарий от tailgunner

В мане pbuilder есть опция --execute <script>, для выполнения скрипта в изолированном окружении. Попробовал - началась распаковка образа, но потом выскочила ошибка об отсутствующих зависимостях. То есть как я понял - нужно перепаковать образ, включив туда нужные сборочные зависимости, и можно будет собирать статик-сборку?

Sunderland93 ★★★★★ ()
Последнее исправление: Sunderland93 (всего исправлений: 1 )
Ответ на: комментарий от Sunderland93

То есть как я понял - нужно перепаковать образ, включив туда нужные сборочные зависимости

Не понимаю, о каком образе ты говоришь. Нужно поправить debian/rules собираемого пакета так, чтобы он линковал библиотеки статически. Прописанных вdebian/control зависимостей на dev-пакеты должно хватить для статической сборки.

tailgunner ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.