GCC Mac OS X框架搜索路径:/ System / Library之前/ Library?

时间:2010-09-07 10:59:05

标签: macos gcc

我正在尝试在Mac OS X上编译一个链接到Python的项目。我在/Library/Frameworks中有Python 2.7框架。我为Mac OS X 4编译,所以我在/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks中也有Python 2.3。如果我使用gcc调用-F/Library/Frameworks并查看其对-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)

即。它忽略了我的/Library/Frameworks,因为它是一个副本(最后一个路径,它是/Library/Frameworks的符号链接),然后在我的2.7之前找到它自己的Python 2.3框架。

我理解如何解决这个问题(例如,使用包含目录的完整路径的-I),但我对搜索顺序感到有些困惑。例如。链接器(ldseems to search System/Library and Library in different order。我试过检查手册和谷歌,但显然,我的技能太低了:)

我想我的问题是:

  • 这是正常的行为,为什么gcc按此顺序进行搜索,而ld搜索的方式不同?
  • 是否有任何框架精明的方法来解决这个问题,或者我必须使用普通的旧-I标志?

1 个答案:

答案 0 :(得分:4)

我认为这是一个错误,gcc和ld在两者之间有不同的顺序。您可以通过向llvm和/或Apple提交错误来解决此问题。如果图书馆是第一个,我认为这将做你想要的。

在此之前,你可以这样做:

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