LINUX.ORG.RU

Бинарники в shell скрипте

 ,


2

3

Есть C код, скомпилировал его в двух вариантах: gcc -m32 и gcc -m64. Цель - это сделать универсальный исполняемый файл, который бы умел запускаться на всех десктопных архитектурах.

Думал, может попробовать засунуть бинарники блобом в скрипт, который бы определял архитектуру и запускал соответствующий блоб:

#!/bin/bash

LOCAL_ARCH=`uname -m 2> /dev/null`

[ "$LOCAL_ARCH" = "i386" ] && LOCAL_ARCH="32"
[ "$LOCAL_ARCH" = "i486" ] && LOCAL_ARCH="32"
[ "$LOCAL_ARCH" = "i586" ] && LOCAL_ARCH="32"
[ "$LOCAL_ARCH" = "i686" ] && LOCAL_ARCH="32"
[ "$LOCAL_ARCH" = "x86_64" ] && LOCAL_ARCH="64"

if [ -z "$LOCAL_ARCH" ]; then
    echo "Поломался uname"
    exit 1;
fi

if [ "$LOCAL_ARCH" == "32" ]; then
    echo "32"
fi

if [ "$LOCAL_ARCH" == "64" ]; then
    echo "64"
fi

Единственное условие в том, что на выходе должен получиться один файл, ничего не откуда не докачивающий и ничего не пишущий рядом с собой, то есть все должно быть в скрипте и запускаться из скрипта.

Есть идеи как это сделать?


У некоторых проприетарных софтин так установщики сделаны, возьми да расковыряй.

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

Я тоже самое хотел посоветовать, но это не подходит под требования:

ничего не пишущий рядом с собой

Эти установщики просто делают tar на самого себя с каким-то смещением и потом запускают нужный бинарь. Ему надо скормить elf по нужному смещению лоадеру, не сохраняя промежуточный результат. Я выше кидал ссылку на SO, копать начинать можно оттуда.

DELIRIUM ☆☆☆☆☆
()

А на arm что твоя штука делать будет?

mittorn ★★★★★
()

Предлагаю хранить исходник в файле и запускать gcc

mittorn ★★★★★
()

shar-архив

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