Где обычно определяются системные символы? - PullRequest
0 голосов
/ 15 июня 2011

Я смотрю на исходный код Tor как часть проекта RA.Я пытаюсь выяснить, почему он был автоматически скомпилирован для использования потоков в одной системе (SuSE) и запускает новый процесс в другой системе (Solaris).В исходном коде есть только несколько мест, где вызывается fork(), и это зависит от определения различных символов (например, ENABLE_THREADING или USE_PTHREADS).Я искал файлы и не смог найти определения для большинства необходимых символов.

Я не ищу решение этой проблемы конкретно, а скорее общее руководство.Как и где определяются символы, относящиеся к системно-зависимой компиляции?

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Честно говоря, я не знаю, но вот моя догадка .

Это макросы , которые определены в Makefile. Часто Makefile динамически генерируется каким-то сценарием ./configure.

Обратите внимание, что в C и C ++ принято делать все макросы заглавными и подчеркивающими символами, чтобы было более очевидно, что они являются макросами. Это, конечно, просто соглашение, и не обязательно.

В конце концов, grep может быть вашим другом. Попробуйте что-то вроде этого в исходном каталоге:

grep -R "ENABLE_THREADING" *

это найдет все файлы, которые используют или определяют этот макрос.

0 голосов
/ 15 июня 2011

Они генерируются во время configure части сборки с autotools.

...