Вопрос относится к следующей команде сборки, которая является частью проекта, который я унаследовал от потерянного программиста, которого я не могу попросить объяснить. Проект был основан на образце латентности alsa utils, который он расширил для обеспечения других функциональных возможностей. Команда работает над проектом, но я хочу начать удалять весь неиспользуемый мусор в проекте, и мне нужно понять, что здесь происходит. Я могу программировать C и использовать gcc в основном смысле, но я не очень хорошо понимаю эту команду. Интересно, если кто может подтвердить мои предположения ниже и объяснить пару бит:Параметры компиляции для проекта alsa
Я имею эту команду для создания проекта:
если НКА -DHAVE_CONFIG -I. -Я. -I ../ include -I ../ include -Wall -pipe -g -g -O2 -MT latency.o -MD -MP -MF ".deps/latency.Tpo" -c -o latency.o латентность. с; затем mv -f ".deps/latency.Tpo" ".deps/latency.Po"; else rm -f ".deps/latency.Tpo"; fi & &/bin/bash ../libtool --tag = CC --mode = ссылка gcc -lvgagl -lvga -Wall -pipe -g -g -O2 -o latency latency.o ../src/libasound.la
Я думаю, что я понимаю, что происходит здесь. Wall = warnings, pipe = нерелевантный, -g = отладочный материал, -O2-оптимизация, -MT создает объектный файл вместо исполняемого файла, и в целом первый бит команды означает создание списка зависимостей от latency.c, а также компиляцию latency.o. Файл зависимости должен называться .deps/latency.Tpo.
Если первая команда возвращает успех, переместите .deps/latency.Tpo в .deps/latency.po, если он возвращает ошибку delete .deps/latency.Tpo.
После того, как удаление или перемещение выполнено успешно, запустите последний бит (после & &). Какая связь latency.o, ../src/libasound.la, lvgagl и lvga вместе с исполняемой задержкой.
В настоящее время проект использует svgalib, который мне не нужен, поэтому я начну с его удаления, и я предполагаю, что смогу удалить -lvgagl -lvga из команды libtool.
Однако я полностью не понимаю «-DHAVE_CONFIG_H -I. -Я. -I ../ include -I ../ include 'часть. Я знаю, что - это путь поиска файла заголовка, но почему он повторяется дважды? И что означает DHAVE_CONFIG_H? И зачем беспокоиться о создании файла зависимости, если он не используется снова (я не вижу других ссылок на него во время этапа libtool).
'-DHAVE_CONFIG_H' определяет' HAVE_CONFIG_H' ('-D' устанавливает определение). '-I.' устанавливает текущий каталог как путь включения. Нет причин делать это дважды - я предполагаю, что второй экземпляр - опечатка. – simonc