История изменений
Исправление ZenitharChampion, (текущая версия) :
> Не запустится, потому что в 90% влезет что ядро не той системы
BSD что ли?
> и libc не той подверсии
Версия 2.5 - самое то. А у всех версий выше есть обратная совместимость. Кроме того, в систему с GLIBC 2.5 можно установить GCC 4.8 и компилировать программы в нём. В RHEL/CentOS даже не нужно ничего компилировать для этого. Потому что в отличие от LIBC, libstdc++ можно таскать в архиве с программой.
> И что-то мало у тебя библиотек. Например, нет криптографии.
Разве нет? Странно. Значит, я не перечислил всё lsb-*.
> Что делать? Вкомпилировать openssl?
Если libssl.so.0.9.8 кажется слишком старой, положи последний релиз в архив с программой.
> Не вкомпилировать? Так программа не запустится.
Вот скрипт запуска игры Osmos:
#!/bin/sh
# Change to game directory
CANONPATH=`readlink -f "$0"`
cd "`dirname "$CANONPATH"`"
MACHINE=`uname -m`
if [ "$MACHINE" = x86_64 ]
then
BIN=./Osmos.bin64
else
BIN=./Osmos.bin32
fi
$BIN $@
e=$?
exit $e
VVVVVV:
#!/bin/sh
# Change to game directory
CANONPATH=`readlink -f "$0"`
cd "`dirname "$CANONPATH"`"
# Check resource folders exist
if [ ! -e data ]
then
echo "You are missing games resources `pwd`"
echo "Your installation is incomplete!"
exit 1
fi
MACHINE=`uname -m`
if [ "$MACHINE" = x86_64 ]
then
LIBS=./LIB64
BIN=./VVVVVV_64
else
LIBS=./LIB32
BIN=./VVVVVV_32
fi
# Run the game:
export LD_LIBRARY_PATH=$LIBS:"$LD_LIBRARY_PATH"
$BIN $@
И так у всех игр: Trine, World Of Goo, Braid, Doom, Quake... Короче, более 50.
Итог 1). Библиотеки можно положить в архив с программой. Если программа распространяется не только в tar.gz, но и в RPM/DEB, то можно просто прописать зависимости. 2). GLIBC использовать как можно старее. Стандарт LSB гласит использовать 2.5. 3). Использовать GCC 4.1 можно, но не обязательно. Можно просто таскать с собой libstdc++.so.6.
Исходная версия ZenitharChampion, :
> Не запустится, потому что в 90% влезет что ядро не той системы
BSD что ли?
> и libc не той подверсии
Версия 2.5 - самое то. А у всех версий выше есть обратная совместимость. Кроме того, в систему с GLIBC 2.5 можно установить GCC 4.8 и компилировать программы в нём. В RHEL/CentOS даже не нужно ничего компилировать для этого. Потому что в отличие от LIBC, libstdc++ можно таскать в архиве с программой.
> И что-то мало у тебя библиотек. Например, нет криптографии.
Разве нет? Странно. Значит, я не перечислил всё lsb-*.
> Что делать? Вкомпилировать openssl?
Если libssl.so.0.9.8 кажется слишком старой, положи последний релиз в архив с программой.
> Не вкомпилировать? Так программа не запустится.
Вот скрипт запуска игры Osmos:
#!/bin/sh
# Change to game directory
CANONPATH=`readlink -f "$0"`
cd "`dirname "$CANONPATH"`"
MACHINE=`uname -m`
if [ "$MACHINE" = x86_64 ]
then
BIN=./Osmos.bin64
else
BIN=./Osmos.bin32
fi
$BIN $@
e=$?
exit $e
VVVVVV:
#!/bin/sh
# Change to game directory
CANONPATH=`readlink -f "$0"`
cd "`dirname "$CANONPATH"`"
# Check resource folders exist
if [ ! -e data ]
then
echo "You are missing games resources `pwd`"
echo "Your installation is incomplete!"
exit 1
fi
MACHINE=`uname -m`
if [ "$MACHINE" = x86_64 ]
then
LIBS=./LIB64
BIN=./VVVVVV_64
else
LIBS=./LIB32
BIN=./VVVVVV_32
fi
# Run the game:
export LD_LIBRARY_PATH=$LIBS:"$LD_LIBRARY_PATH"
$BIN $@
И так у всех игр: Trine, World Of Goo, Braid, Doom, Quake... Короче, более 50.
Итог 1). Библиотеки можно положить с собой. Если программа распространяется не только в tar.gz, но и в RPM/DEB, то можно просто прописать зависимости. 2). GLIBC использовать как можно старее. Стандарт LSB гласит использовать 2.5. 3). Использовать GCC 4.1 можно, но не обязательно. Можно просто таскать с собой libstdc++.so.6.