2011-09-12 16 views
8

GCC manuel diyor:-lobjc'ye veya -lobjc'ye değil mi?

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

Ve:

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

Ancak

ben başarılı bir şekilde p derlemek Sadece bir rogramla:

$ cc prg.m -framework Foundation 

Çerçeve eklediğinizde, bağlayıcı varsayılan mı? Eğer öyleyse, nerede belgelendirilmiş? Program zaten bağlanmış olur: Foundation çerçeve zaten libobjc ile bağlantılı olduğu

$ 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

Bunu linux sistemlerinde derlemeyi denediniz mi? os x varsayılan olarak bunu yapabilir. – Eimantas

+0

İyi yakalama, denemedim. Ancak el kitabının kendisi bile birçok yerde "Yalnızca Apple" notları ile değiştirildi. Bu yüzden merak ediyorum (bunun Apple sistemlerine özel olması durumunda) neden bu bölümlerin yakınında açık bir şekilde belgelenmiyor? – sidyll

+3

Evet, Apple'ın derleyicileri için varsayılan bir bağlantı noktasıdır. Adam sayfalarında her zaman güncel değiller. Lütfen bir hata raporu gönderin. – Yuji

cevap

5

budur.

OSX'de, Foundation çerçevesine (çok nadir olan) bağlanmadıysanız, -lobjc seçeneğine ihtiyacınız olacaktır.

+0

Yazım hatası, -lobjc –