2011-09-12 18 views
8

GCC手冊說:要-lobjc還是不要-lobjc?

file.m
        Objective-C source code. Note that you must link with thelibobjc
        library yo make an Objective-C program work.

和:

-lobjc
        You need this special case of the-loption in order to link an
        Objective-C or Objective-C++ program.

不過,可以成功地編譯的p簡單的程序:

$ cc prg.m -framework Foundation 

當您包含框架時,它是否爲鏈接器默認值?如果是這樣, 在哪裏記錄?該計劃得到反正鏈接:

$ otool -L a.out 
a.out: 
     /System/Library/Frameworks/Foundation.framework/.../Foundation (...) 
     /usr/lib/libSystem.B.dylib (...) 
    --> /usr/lib/libobjc.A.dylib (...) 
     /System/Library/Frameworks/CoreFoundation.f...k/.../CoreFoundation (...) 
+0

你有沒有試過在Linux系統上編譯這個?它可能是os x默認這樣做的。 – Eimantas

+0

好,我沒有試過。但即使手冊本身也被修改,在許多地方都有「僅限Apple」筆記。所以我想知道(如果這是Apple系統專有的)爲什麼它沒有明確記錄在這些部分附近。 – sidyll

+3

是的,它是Apple編譯器的鏈接器默認值。他們並不總是在他們的手冊頁中保持最新。請提交錯誤報告。 – Yuji

回答

5

這是因爲Foundation框架已經與libobjc聯繫。

因此,在OSX上,只有當您沒有鏈接Foundation框架(非常罕見)時,您才需要-lobjc選項。

+0

錯字,它是-lobjc –