Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos GCC Mac OS X框架搜索路径:/System/Library-before/Library?_Macos_Gcc - Fatal编程技术网

Macos GCC Mac OS X框架搜索路径:/System/Library-before/Library?

Macos GCC Mac OS X框架搜索路径:/System/Library-before/Library?,macos,gcc,Macos,Gcc,我试图在MacOSX上编译一个链接到Python的项目。我在/Library/Frameworks中使用了Python 2.7框架。我为MacOSX4编译,所以在/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks中也有Python 2.3。如果我用-F/Library/Frameworks调用gcc并查看它用-v做了什么,我会看到以下内容: ignoring duplicate directory "/Library/Framewo

我试图在MacOSX上编译一个链接到Python的项目。我在/Library/Frameworks中使用了Python 2.7框架。我为MacOSX4编译,所以在/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks中也有Python 2.3。如果我用-F/Library/Frameworks调用gcc并查看它用-v做了什么,我会看到以下内容:

ignoring duplicate directory "/Library/Frameworks"
  as it is a non-system directory that duplicates a system directory
<skipped>
#include "..." search starts here:
#include <...> search starts here:
 <skipped>
 /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks (framework directory)
 /Developer/SDKs/MacOSX10.4u.sdk/Library/Frameworks (framework directory)
也就是说,它忽略了my/Library/Frameworks,因为它是最后一条路径的副本,该路径是指向/Library/Frameworks的符号链接,然后在my 2.7之前找到自己的Python 2.3框架

我知道如何解决这个问题,例如使用-I和include目录的完整路径,但我对搜索顺序有点困惑。例如,链接器ld。我曾尝试查看手册和谷歌,但显然,我的技能太低:

我想我的问题是:

这是一种正常的行为吗?为什么gcc按此顺序搜索,而ld按不同的顺序搜索? 有没有什么精通框架的方法来解决这个问题,或者我必须使用普通的old-I标志?
我认为gcc和ld之间的顺序不同是一个缺陷。你可以通过向llvm和/或苹果提交一个bug来修复这个问题。若图书馆是第一个,我想这会满足你们的要求

在此之前,您可以执行以下操作:

$ mkdir Frameworks
$ ln -s /Library/Frameworks/Python.framework Frameworks
$ gcc -FFrameworks -E t.c

谢谢,这是一个解决方案,我没有想到我可以使用符号链接:不幸的是,我失去了对那个临时帐户的控制,所以我无法将答案标记为解决方案。