Автоделают и autoconf стандартный способ скомпилировать код?

sysfs является Виртуальная файловая система, созданная во время 2.6 циклов выпуска Ядра для проявления информации об устройстве, поскольку procfs не сделал этого типа информации настолько хорошо.

Память и т.д. не была портирована к sysfs, поскольку это никогда не предназначалось, чтобы показать, что тип информации, таким образом, маловероятно, что это будет портировано вообще.

22
19.03.2011, 20:02
5 ответов

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

42
27.01.2020, 19:42
  • 1
    Просто незначительная гнида: мандат стандартов GNU, поставляющий сгенерированные файлы в tarballs, для сокращения зависимости от сборки до минимума универсально доступных инструментов. Если Вы получите необработанный источник (от системы управления версиями, например), то сгенерированные файлы не будут там. –  vonbrand 15.03.2013, 18:40

В этой области существует два "Крупных игрока"; Cmake и Автоинструменты GNU.

  • Автоинструменты GNU являются GNU способ сделать вещи и справедливо фокусируются на *, отклоняют. Именно своего рода метасистема сборки, обеспечивая ряд инструментов генерирует определенные файлы конфигурации и make-файлы для того, что Вы пытаетесь сделать. Это помогает Вам внести больше изменений в своем коде, не имея необходимость непосредственно управлять Вашей системой сборки, и это помогает другим создать Ваш код способами, которыми Вы не разработали для - под *, отклоняют.

  • Cmake является межплатформенным способом сделать вещи. Команда Cmake создает программное обеспечение на многих много много различных путей, с GCC, Visual Studio, XCode, Windows, OSX, Солярисом, BSD, GNU/Linux, безотносительно. Если Вы вообще обеспокоены мобильностью Вашей кодовой базы, это - способ пойти.

Как был упомянут, некоторые люди, кажется, любят Scons. Если Вы знакомы с Python, это могло бы обеспечить больше непротиворечивости в Вашей рабочей среде.

Ruby также имеет своего рода метасистему сборки под названием Грабли, которые довольно прохладны в своем собственном праве и уже очень удобны для знакомых с Ruby.

14
27.01.2020, 19:42

Scons является одной возможной заменой, хотя у меня нет личного опыта. Это также реализовано в Python, который мог быть проблемой, в зависимости от среды сборки.

6
27.01.2020, 19:42
  • 1
    , не проблема, так как Python теперь фактически везде. Основная жалоба на SCons до сих пор - то, что это неприемлемо медленно. Существуют некоторые тонкие настройки для принесения в жертву точности сборки в пользу скорости, но я не уверен, на одном уровне ли она все еще с, Делают. –  Alex B 11.08.2010, 02:43

При использовании C#/Mono можно использовать msbuild (.sln/.csproj файлы, используемые MonoDevelop и Visual Studio) для управления всем процессом сборки.

Можно затем или создать из MonoDevelop или работать xbuild управляйте в своем любимом терминале (работы лучше всего в Моно> = 2.6). Это чрезвычайно легко и не требует в значительной степени никакой работы с Вашей стороны, потому что MonoDevelop обработает msbuild файлы для Вас, и Вы не должны будете редактировать их, если Вы не захотите настроить вещи вне того, что UI MonoDevelop может сделать для Вас.

Я не знаком с тем, как люди, которые зависят от msbuild, обрабатывают установки для своих проектов, но Вы могли всегда спрашивать это.;-)

3
27.01.2020, 19:42
  • 1
    Да, я знаю о xbuild, но я пытаюсь отнять от груди меня от IDE, которые просто хотят содержать мою руку. Плюс, Моно компилируется с помощью Моно и использует autoconf, таким образом, я хотел знать немного больше.Спасибо! –  Louis Salin 11.08.2010, 17:26
  • 2
    Интересно, много Моно проектов пытается мигрировать на msbuild теперь, когда xbuild работает так хорошо. Это делает поддержку Windows/Mac немного легче. Моно имеет так много кода C, что я не уверен, насколько практичный это было бы, чтобы они переместились в xbuild. Но autoconf работает отлично, также - безотносительно работ для Вас. :-) –  Sandy 11.08.2010, 20:31

Для C# можно использовать xbuild (и msbuild на окнах), который разработает проект из файлов проекта.

0
27.01.2020, 19:42

Теги

Похожие вопросы