2011-08-06 25 views
1

我只是試着寫一個簡單的C程序上OSX獅子我該如何模仿OSX Lion上的GNU/linux C開發環境?

#include <stdio.h> 
int main() { 
    printf("hello world\n");                   
    return 0; 
} 

用gcc

$ gcc hello.c 
test.c:1:19: error: stdio.h: No such file or directory 
test.c: In function ‘main’: 
test.c:3: warning: incompatible implicit declaration of built-in function ‘printf’ 

好編譯......細

$ gcc -I /Developer/SDKs/MacOSX10.6.sdk/usr/include 
ld: library not found for -lcrt1.10.6.o 
collect2: ld returned 1 exit status 

什麼?讓我們來看看...

$ gcc -I /Developer/SDKs/MacOSX10.6.sdk/usr/include -L/Developer/SDKs/MacOSX10.6.sdk/usr/lib test.c 
$ ./a.out 
hello world 

終於!

這似乎是很多努力,只是爲了得到一個hello世界的工作,我如何使默認的gcc在MacOSX10.6.sdk目錄中找到庫和頭文件,就像它在Linux上一樣?在Linux上我發現ldd和ldconfig非常有用,它們似乎不存在於OSX上......是否有相當的?還有什麼其他有用的工具可用於在OSX上開發C?

是的,我知道xcode使這更容易,但假設我想使用vim和命令行工作在opensource c項目。

+0

據我所知,你的第一次嘗試是應該工作。至少,它在我的機器上工作。 – zneak

+0

我會嘗試檢查xcode的功能,比如它設置了哪些環境變量以及它傳遞給gcc的哪些選項,並將其複製到makefile中。這樣你就可以做'做'和瞧。 –

+0

@zneak我還以爲它會,以及我隱約記得它工作之前,但這是我第一次嘗試編譯任何簡單的C程序,因爲升級到OSX獅子(10.7) –

回答

1

我能想到的三種可能性:

  1. 你有10.6安裝和升級到10.7。您需要安裝新版本的Xcode(4.1,從應用程序商店獲取)以獲取開發人員工具。

  2. 您安裝了Xcode,進行了自定義安裝,並取消選中「UNIX開發」或其他東西。重新運行安裝程序並安裝缺少的部件。

  3. 您安裝了破碎的第三方版本的gcc。嘗試which gcc,看看你得到什麼。

+0

hm ...沒有xcode 4.1可能是...現在安裝它。我會接受你的答案,如果它修復了我的環境:) –

+0

是的,我覺得自己像一個白癡,升級到獅子時沒有升級xcode。 –

1

在OS X 10.7上,如果您從Mac App Store下載了Xcode 4.1,然後運行它下載的安裝程序(在/Applications),您的第一次嘗試應該已經工作得很好,假設您沒有設置一些環境變量看着並影響着蘋果的gcc工具鏈。在這種情況下生成的目標文件將使用默認的10.7 ABI(include文件和庫)。如果你想產生與OS X 10.6兼容的東西,那麼你需要告訴工具鏈使用10.6 SDK ABI,這是你在第三次嘗試中所做的。獨立項目通常通過設置Makefile來自動構建來處理此問題。但是,除非您試圖在OS X(此處爲10.7)的版本上構建某些版本的OS X(比如10.6),否則通常不需要使用SDK。