2010-09-07 35 views
5

我想在Mac OS X上編譯一個鏈接到Python的項目。 /Library/Frameworks我有Python 2.7框架。我爲Mac OS X 4編譯,所以我在/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks也有Python 2.3。如果我在它與-v的確激活gcc-F/Library/Frameworks和偷看,我看到以下內容:GCC Mac OS X框架搜索路徑:/ System/Library之前/ Library?

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,包含include目錄的完整路徑),但我對搜索順序有些困惑。例如。鏈接器(ldseems to search System/Library and Library in different order。我試着檢查手冊和谷歌,但是,很顯然,我的技能是太低了:)

我想我的問題是:

  • 這是一種正常的行爲,爲什麼gcc搜索順序,而ld搜索不同?
  • 是否有任何框架精明的方法來解決這個問題,或者我必須使用普通的舊的-I標誌?

回答

4

我認爲這是一個錯誤,gcc和ld在兩者之間有不同的順序。您可以通過向llvm和/或Apple提交錯誤來修復此問題。如果圖書館是第一個,我認爲這會做你想做的。

在那之前,你可以這樣做:

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

謝謝,這是一個解決方案,它並沒有出現我,我可以用一個符號:)(不幸的是,我失去了控制該臨時賬戶,所以我不能將答案標記爲解決方案。) – 2011-04-01 17:42:16