Я начну с того, что скажу, что самый простой способ получить программные сборки, которые будут работать на CentOS 4 или даже более старых версиях, - это создать код для этих целевых дистрибутивов или отправить его с помощью некоторых скриптов / инструментов.чтобы было проще воссоздать сборку на этой машине.Если вы когда-либо загружали версию с исходным кодом и выполняли шаги /.configure && make && make install
, это то, о чем я говорю.
Эти исходные версии основаны на системе GNU Autotools, которая дает вамконфигурация (она определяет, что можно и нельзя использовать в целевой системе) и генерирует make-файл для сборки.
Существуют альтернативы системе GNU Autotools (которую, честно говоря, я нахожу рутинной задачей для изученияи использовать), как cmake и scons.Вот страница (на scons), которая сравнивает популярные инструменты сборки:
http://www.scons.org/wiki/SconsVsOtherBuildTools
Так что, если вы все еще хотите собрать на своем компьютере CentOS 5 для более старых установок CentOS?
Теперь, для чего вам нужны устаревшие библиотеки и компиляторы, если вы хотите собрать систему CentOS 5:
Итак, у вас CentOS 5, который запускает этот набор инструментов:
gcc 4.1.2
glibc 2.5.x
libstdc++ 4.1.2
И CentOS 4, который запускает этот набор инструментов:
gcc 3.4.x
glibc 2.3.x
libstdc++ 3.4.x
Большая проблема состоит в том, что если бы вы просто собирали программное обеспечение C или C ++ с помощью стандартных инструментов CentOS 5, они были бы связаны сбиблиотеки CentOS 5 C и C ++ (glibc, libstdc ++, libgcc), и эти библиотеки не имеют обратной совместимости со старыми версиями.То есть, программное обеспечение, созданное для glibc 2.5.5, никоим образом не гарантированно будет работать с glibc 2.4 или даже с glibc 2.5.4 (хотя, если нет особых обстоятельств, вы сможете запустить программное обеспечение, созданное в glibc 2.4, на glibc 2.5.Икс).Вам также нужно будет построить зависимости от более старых версий библиотеки.
Когда вы пойдете еще старше, вам нужно будет создать кросс-компилятор (ищите crosstool), который позволит вам ориентироваться на сборки для более старых систем., это будет ссылаться на более старые версии libc и других зависимостей, построенных на этом.
Есть ли что-то еще, кроме построения на цели и тому подобное?
Вы можете статически связать все ваши зависимостив двоичный файл, так что вам не придется беспокоиться о зависимостях и тому подобное.Тем не менее, я никогда не делал таких вещей, и я забываю, была ли какая-то проблема со статической связью glibc, или я думаю о какой-то другой крупной библиотеке, которая создавала проблемы со статической связью (на техническом уровне).