Используя * Autotools *, как мне сохранить список компиляторов в файле по файлу?

Пожалуйста, поймите, что я использую Autotools / Automake / Autoconf, и я не могу использовать перенаправление, потому что его нужно применять командой по команде в файле make, создаваемом autotools.

Мне нужно, чтобы autotools создавал файл make, который содержит положения для создания и сохранения списков компилятора и / или ассемблера, связанных с каждым отдельным источником в пакете.

Моя первая попытка заключалась в том, чтобы добавить '-Wa, -acdhln -g' в CCFLAGS. Это действительно привело к созданию составного списка c / ассемблера, но он отправился на терминал , а не в файл . Если бы я захватил вывод make (используя перенаправление), у меня было бы 47 разных списков, собранных вместе вместе с вкрапленными командами сборки.

То, что я надеялся, произойдет, оптимистично прочитав GCC doc Общие параметры – Используя сборник компиляторов GNU ,

-o файл
Поместите вывод в файл. Это относится к произвольному типу вывода, будь то исполняемый файл, объектный файл, файл ассемблера или предварительно обработанный код C.

Если -o не указывается, по умолчанию следует поместить исполняемый файл в a.out, объектный файл для source.suffix в source.o, его файл ассемблера в source.s, предварительно скомпилированный заголовочный файл в source.suffix.gch , и весь предварительно обработанный источник C на стандартном выходе.

для файлов {file} .o и {file} .s появится на основе «-o {file} .o» в командной строке GCC.

Случилось так, что список сборок, очевидно, был отправлен на стандартный вывод.

EDIT добавит 23 октября 2016 года. Теперь я понимаю, что документация говорила о вещи, такой как выходной файл компилятора, переданный в качестве входных данных ассемблеру, а выходной файл ассемблера передавался как вход в компоновщик. Не было бы также и ассемблерного файла LISTING, который я хочу захватить.

Это также относится к использованию опции -save-temps; он сохранит результат только от ассемблера, который является входным файлом компоновщика, а не с листом файла ассемблера.

  • Альтернативная интерпретация документа может означать, что каждый выходной файл будет помещен в один отдельный файл, названный в операнде -o, либо смешанным, либо с последним созданным файлом, который накладывает ранее созданные файлы. (Например, выход из прохода компилятора накладывается на выход из ассемблерного прохода, наложенного на выход из пакета сбора.)

    Поскольку это, как представляется, является продуктивным, я предположил, что GCC (исполнительный директор высшего уровня) может быть достаточно умным, чтобы настроить имя файла для разных проходов. Это не похоже на правду.

  • Опускание имени файла из «-o» похоже на то, что требуется, за исключением того, что объектный файл всегда называется «a.out» вместо «{source. .o». Почему была выбрана константа для имени исходного источника, для меня нет смысла, но шаг переименования после каждого вызова GCC может изменить «a.out» на «{source] .o».

  • Консультирование с документацией GNU Assembler говорит о менее-о -о и не имеет возможности работать с выходным листингом. Одна версия ассемблера, tigcc, документы, которые перечислены в качестве стандартного вывода.

    • Были ли исправления в GNU и GNU Build Standard для Unix?

    • (Я сумасшедший, или я просто живу в нереальности под названием Unix??)

Итак, теперь похоже, что Make нужно сообщить GCC, что при выполнении шага сборки этот стандартный вывод должен быть помещен в файл $ @. S. Я подозреваю, что это невозможно сделать, учитывая, как выглядят параметры GCC (и быстрый взгляд на то, как используются файлы спецификаций). Возможно, Automake (или libtools?) Может создавать многоступенчатую операцию компиляции, отделяя различные шаги, чтобы можно было захватить вывод сборки.

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

Наконец, я работаю с пакетом, который кто-то создал с помощью autotools, tar-balled и загрузил мне. Я не делал упаковку с автопотоками, и я не создавал гигантские файлы * .ac, и я не хочу их взломать, если вообще избежать.

Мне просто нужно получить некоторые сборки и карты ссылок, чтобы попробовать и отладить проблему с пакетом.

  • Как получить (только) http-статус сайта в сценарии оболочки?
  • Подробный вывод в лог-файле и простой вывод на экран?
  • Все ли процессы Linux записывают EOF в stdout, когда они завершают / заканчивают завершение?
  • Как вывести stderr / stdout моего скрипта как в файл, так и в консоль?
  • Как захватить вывод из команды в сценарии оболочки
  • Как я могу получить версию vsftpd в переменной оболочки?
  • Как создать виртуальный аудиовыход и направить его в дистрибутив на основе Ubuntu
  • Какой поток использует перцепция?
  • One Solution collect form web for “Используя * Autotools *, как мне сохранить список компиляторов в файле по файлу?”

    Я, наконец, сломался и написал настоящую программу, которая проанализировала захваченный вывод терминала и извлекла файлы листинга. Хотя он работает для моей конкретной конфигурации / пакета конфигурации / сборки, я не могу предложить его как нечто большее, чем пример. Это, конечно, не удобный инструмент.

    Я сожалею, что это действительно не общий ответ на преодоление короткого прихода к ауттологам.

    Linux и Unix - лучшая ОС в мире.