sysfs является Виртуальная файловая система, созданная во время 2.6 циклов выпуска Ядра для проявления информации об устройстве, поскольку procfs не сделал этого типа информации настолько хорошо.
Память и т.д. не была портирована к sysfs, поскольку это никогда не предназначалось, чтобы показать, что тип информации, таким образом, маловероятно, что это будет портировано вообще.
Autoconf и Automake были изложены для решения эволюционной проблемы Unix.
Как Unix, развитый из различных направлений, разработчики, которые хотели портативный код, были склонны писать код как это:
#if RUNNING_ON_BSD
Set things up in the BSD way
#if RUNNING_ON_SYSTEMV
Set things up in the SystemV way
#endif
Поскольку Unix был разветвлен в различные реализации (BSD, SystemV, много ветвлений поставщика, и более позднего Linux и другие подобные Unix системы), это стало важным для разработчиков, которые хотели написать портативный код для написания кода, который зависел не от конкретного бренда операционной системы, а на функциях, выставленных операционной системой. Это важно, потому что версия Unix представила бы новую возможность, например, "отправить" системный вызов, и позже другие операционные системы примут его. Вместо того, чтобы иметь спагетти кода, который проверил на бренды и версии, разработчики, начали зондировать функциями, таким образом, код стал:
#if HAVE_SEND
Use Send here
#else
Use something else
#endif
Большинство файлов README для компиляции исходного кода назад в 90-х указало на разработчиков, чтобы отредактировать config.h файл и прокомментировать это надлежащие функции, доступные в системе, или поставит стандарт config.h файлы для каждой конфигурации операционной системы, которая была протестирована.
Этот процесс был и громоздким и подверженным ошибкам, и это - то, как Autoconf оказался. Необходимо думать о Autoconf как о языке, составленном из команд оболочки со специальными макросами, которые смогли заменить человеческий процесс редактирования config.h с инструментом, который зондировал операционную систему для функциональности.
Вы обычно писали бы свой код зондирования в файле configure.ac и затем выполняли бы команду autoconf, которая скомпилирует этот файл в исполняемую команду настройки, которую Вы видели используемый.
Таким образом, когда Вы работаете ./configure && make
Вы зондировали для функций, доступных в Вашей системе, и затем создавали исполняемый файл с конфигурацией, которая была обнаружена.
Когда проекты с открытым исходным кодом начали использовать системы управления исходным кодом, имело смысл регистрироваться в configure.ac файле, но не результат компиляции (настраивают). autogen.sh является просто маленьким сценарием, который вызывает autoconf компилятор с правильными аргументами команды для Вас.
--
Автосделайте вырос также из существующих методов в сообществе. Проект GNU стандартизировал регулярный набор целей для Make-файлов:
make all
разработал бы проектmake clean
удалил бы все скомпилированные файлы из проектаmake install
установил бы программное обеспечениеmake dist
и make distcheck
подготовил бы источник к распределению и проверил бы, что результатом был полный пакет исходного кодаСоздание совместимых make-файлов стало обременительным, потому что было много шаблона, который был повторен много раз. Поэтому Автосделайте, был новый компилятор, который интегрировался с autoconf и обработал "исходный" Make-файл (названный Makefile.am) в Make-файлы, которые могли затем питаться к Автоконференции.
automake/autoconf набор инструментальных средств на самом деле использует много других инструментов помощника, и они увеличиваются другими компонентами для других определенных задач. Поскольку сложность выполнения этих команд в порядке выросла, потребность в готовом-к-управляемому сценарии родилась, и это - то, куда autogen.sh прибыл из.
Насколько я знаю о, Gnome был проектом, который представил использование этого сценария помощника autogen.sh
В этой области существует два "Крупных игрока"; Cmake и Автоинструменты GNU.
Автоинструменты GNU являются GNU способ сделать вещи и справедливо фокусируются на *, отклоняют. Именно своего рода метасистема сборки, обеспечивая ряд инструментов генерирует определенные файлы конфигурации и make-файлы для того, что Вы пытаетесь сделать. Это помогает Вам внести больше изменений в своем коде, не имея необходимость непосредственно управлять Вашей системой сборки, и это помогает другим создать Ваш код способами, которыми Вы не разработали для - под *, отклоняют.
Cmake является межплатформенным способом сделать вещи. Команда Cmake создает программное обеспечение на многих много много различных путей, с GCC, Visual Studio, XCode, Windows, OSX, Солярисом, BSD, GNU/Linux, безотносительно. Если Вы вообще обеспокоены мобильностью Вашей кодовой базы, это - способ пойти.
Как был упомянут, некоторые люди, кажется, любят Scons. Если Вы знакомы с Python, это могло бы обеспечить больше непротиворечивости в Вашей рабочей среде.
Ruby также имеет своего рода метасистему сборки под названием Грабли, которые довольно прохладны в своем собственном праве и уже очень удобны для знакомых с Ruby.
Scons является одной возможной заменой, хотя у меня нет личного опыта. Это также реализовано в Python, который мог быть проблемой, в зависимости от среды сборки.
При использовании C#/Mono можно использовать msbuild (.sln/.csproj файлы, используемые MonoDevelop и Visual Studio) для управления всем процессом сборки.
Можно затем или создать из MonoDevelop или работать xbuild
управляйте в своем любимом терминале (работы лучше всего в Моно> = 2.6). Это чрезвычайно легко и не требует в значительной степени никакой работы с Вашей стороны, потому что MonoDevelop обработает msbuild файлы для Вас, и Вы не должны будете редактировать их, если Вы не захотите настроить вещи вне того, что UI MonoDevelop может сделать для Вас.
Я не знаком с тем, как люди, которые зависят от msbuild, обрабатывают установки для своих проектов, но Вы могли всегда спрашивать это.;-)
Для C# можно использовать xbuild (и msbuild на окнах), который разработает проект из файлов проекта.