gcc включает путь и символические ссылки - PullRequest
0 голосов
/ 26 марта 2011

Я пытаюсь скомпилировать Macports на Snow Leopard, а именно файл src/macports1.0/get_systemconfiguration_proxies.c. Это #include s CoreFoundation/CoreFoundation.h, которое #include s CoreFoundation/CFBase.h, которое ... пытается до #include CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h. Теперь CoreServices является символической ссылкой:

$ ls -l CoreServices
lrwxr-xr-x  1 root  wheel  62 Mar 25 17:15 CoreServices -> ../../System/Library/Frameworks/CoreServices.framework/Headers

поэтому я подозреваю, что цель состоит в том, чтобы добраться до ../../System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacTypes.h, что очень хорошо сделать:

$ ls -l ../../System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacTypes.h 
-rw-r--r--  1 root  wheel  30291 Jun 24  2010 ../../System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacTypes.h

Однако, gcc это не нравится:

In file included from $INCLUDE/CoreFoundation/CFBase.h:48,
                 from $INCLUDE/CoreFoundation/CoreFoundation.h:38,
                 from get_systemconfiguration_proxies.c:42:
$INCLUDE/CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h:20:42: error: CarbonCore/ConditionalMacros.h: No such file or directory

что заставляет меня подозревать

( EDIT : Но Tom Zych указывает на то, что я подозреваю неправильно, потому что я не закончил читать сообщение об ошибке. Sigh .)

, что gcc может не разрешать символическую ссылку, а вместо этого слишком умно сворачивается от CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h до Frameworks/CarbonCore.framework/Headers/MacTypes.h, чего, разумеется, не существует:

$ ls -l Frameworks/CarbonCore.framework/Headers/MacTypes.h
ls: Frameworks/CarbonCore.framework/Headers/MacTypes.h: No such file or directory

Возможно ли, что я правильно интерпретировал ошибку? Если это так, есть ли способ убедить gcc перейти по символической ссылке до cd с ..?

1 Ответ

1 голос
/ 26 марта 2011

Сообщение об ошибке заканчивается на:

$INCLUDE/CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h:20:42: \
error: CarbonCore/ConditionalMacros.h: No such file or directory

Похоже, что он смог прочитать и начать обработку MacTypes.h, поскольку он ссылается на номера строк в нем. Файл, который он не может найти: CarbonCore/ConditionalMacros.h.

Я бы предположил, CarbonCore должно быть CarbonCore.framework. Почему это не так давно придумано и исправлено, я не знаю. Возможно, это недавнее изменение.

...