Исходный код и программное обеспечение


Исходный код — это понятные человеку инструкции, из которых создается собственно машинный код, то есть программа. Возможно, вы уже встречали исходный код в той или иной форме. Чтобы увидеть его, достаточно открыть любой файл из каталога /usr/src. Читать исходный код вам не обязательно, но уметь распознавать его необходимо в двух случаях из трех.

Имеющийся исходный код программы вы можете собрать (или скомпилировать) в системе, в которой она будет выполняться. (Выстраивание программного обеспечения на иной платформе с помощью так называемой «кросс-компиляции» потребовало бы от вас гораздо большего объема знаний о сборке программ, да это и не всегда возможно.) Если программа написана для операционной системы, в значительной степени сходной с той платформой, на которой вы ее компилируете, то компиляция будет успешной. Если же ваша платформа существенно отличается от оригинальной, программа не будет скомпилирована. После успешной сборки программного обеспечения на целевой платформе получившуюся программу (то есть двоичный исполняемый файл, или binary) можно копировать на другие идентичные платформы — она должна работать и там.

Некоторые программы написаны настолько хорошо, что их можно компилировать на множестве различных платформ. В отдельные программы специально включена поддержка платформ, значительно отличающихся друг от друга. Например, веб-сервер Apache можно компилировать как в Windows, так и в UNIX, — для этого достаточно набрать make install. Впрочем, это нетипичный случай, свидетельствующий о поистине героических усилиях разработчиков данного программного обеспечения.

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

Раньше каждый администратор UNIX был программистом, а отладка поглощала значительную часть его времени. Каждая UNIX-система немного отличалась от других, поэтому каждый администратор должен был знать свою платформу и платформу, для которой программа была написана, а также отличия этих платформ. Лишь в этом случае можно было рассчитывать на успешный запуск данной программы. Приходилось затрачивать двойные усилия, что было просто ужасно.

Со временем были созданы инструменты, облегчающие кросс-компилирование, такие как autoconf. Но эти инструменты применялись не во всех программах, поэтому при сбоях администратор начинал все с нуля. Системным администраторам приходилось редактировать исходный код и файлы Makefile, чтобы обеспечить хотя бы вероятность того, что программа запустится. Но вероятность того, что программа запустится, это совсем не то же самое, что устойчивая работа программы, не говоря уже о правильной ее работе.

Для упрощения процесса сборки программ в системе FreeBSD была создана коллекция «портов».

Комментарии запрещены.