gcc #include <> и #include "", могу ли я скомпилировать без замены одного на другое? - PullRequest
0 голосов
/ 20 мая 2011

Меня попросили перекомпилировать довольно старую библиотеку обработки EMG, чтобы она работала на современных компьютерах Mac, а не на старых рабочих станциях SunOS, на которых она сейчас работает.Это был болезненный путь для тех, кто не очень разбирался в make-файлах, но после прочтения всего интернета меня это озадачило.

Make-файлы (генерируемые imake) вызывают gcc со следующими параметрами для каждого исходного файлано с ошибками «неопределенные символы»:

gcc -I[First Include Path] -I[Second Include Path] -I. -c [File Name].c
gcc -o [Output File Name] [Include a bunch of libraries] -lm

Я предполагаю, что корень проблемы - ВСЕ операторы #include используют <> для системных библиотек, .h в каталогах включения,и .h в том же каталоге, что и файл .c, который компилируется.Я знаю, что это неправильно, но так оно и есть.Если я изменю их на "" только для .h в той же директории, что и компилируемый .c, то все будет хорошо.

Конечно, я бы не хотел делать это отдельно для сотен файлов.Итак, есть ли какие-то изменения, которые я могу сделать, чтобы gcc посмотрел в текущем каталоге на #include <>?как после прочтения пути поиска, который я собираю, по умолчанию это не так?

Или я обречен продолжить выполнение моего текущего плана по поиску и замене какой-то хакерской работы?

1 Ответ

0 голосов
/ 20 мая 2011

По моему опыту #include "" также будет работать для системных заголовков.Таким образом, вы можете попробовать заменить все #include <> на #include "", если вам все равно, различать локальные и системные заголовки.

...