2014-09-01 2 views
1

Вопрос относится к следующей команде сборки, которая является частью проекта, который я унаследовал от потерянного программиста, которого я не могу попросить объяснить. Проект был основан на образце латентности 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).

+0

'-DHAVE_CONFIG_H' определяет' HAVE_CONFIG_H' ('-D' устанавливает определение). '-I.' устанавливает текущий каталог как путь включения. Нет причин делать это дважды - я предполагаю, что второй экземпляр - опечатка. – simonc

ответ

0

Большая часть этого дерьма генерируется автоматически automake и autoconf; вы можете игнорировать его.

Дублированные включенные дорожки не болят, поэтому никто не потрудился их избежать. -DHAVE_CONFIG_H генерируется autoconf, но не используется никаким кодом в alsa-lib (или latency.c).

Единственными нестандартными вариантами в этом являются библиотеки -lvgagl -lvga, которые вы уже знаете, как обращаться. Все остальное можно игнорировать при переходе на другую систему сборки; значения по умолчанию будут работать нормально.

+0

Большое спасибо. Любая идея, почему создается файл зависимостей? Может быть, потому что другие вещи могут быть связаны с этим объектным файлом после его создания? – Pete

+0

Он всегда генерируется 'automake'. –

+0

О, спасибо. – Pete