Re: Compile Objective C 2.0 code on Linux
site_archiver@lists.apple.com Delivered-To: darwin-dev@lists.apple.com Le 18 déc. 08 à 16:33, Jake McMahon a écrit : The run time has been released though. So advanced stuff aside, a basic 2.0 app that utilizes accessors should work, no? On Thu, Dec 18, 2008 at 10:07 AM, Jean-Daniel Dupas <devlists@shadowlab.org> wrote: Le 18 déc. 08 à 15:50, Jake McMahon a écrit : I'm trying to install all the necessary tools needed to compile Objective C 2.0 code on a Linux workstation. I've downloaded the gcc-5465 package off the Apple website and executed: followed by: make bootstrap if I do make (note, no bootstrap) _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-dev mailing list (Darwin-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-dev/site_archiver%40lists.appl... It depends what you want. Do you want to compile Mac OS X binary on Linux (and run them on OS X) or produce a Linux binary. To run, an objc application need a runtime library (libobjc). When you compile objc sources, the compiler generate call to this library and create structure to represent class and other objc info in a format defined by this library. Actually there is two major runtime. The GNU one (provided with GCC), and the Apple one (aka Next Runtime for historical raison) provided on Darwin source as the obj4 package. AFAK, the GNU runtime does not support properties, and other Obj-C 2 features. (I'm not sure it even support @try/@catch and @synchronize) And the Next/Apple Runtime is not available on Linux. When you define and access properties in an objc 2 application, the compiler generate call to the runtime (like call to objc_getProperty() or objc_setProperty()). If the installed libobjc does not provide theses functions, you will not be able pass the linker step. ../configure --prefix=/tmp/123/ --enable-languages=objc /usr/include/limits.h:125:26: error: no include path in which to search for limits.h make[2]: *** [crtbegin.o] Error 1 make[2]: Leaving directory `/home/user/Download/gcc-5465/xxx/gcc' make[1]: *** [stage1_build] Error 2 make[1]: Leaving directory `/home/user/Download/gcc-5465/xxx/gcc' make: *** [bootstrap] Error 2 ../../gcc/objc/objc-act.c: In function 'objc_init': ../../gcc/objc/objc-act.c:716: warning: suggest braces around empty body in an 'if' statement ../../gcc/objc/objc-act.c: In function 'objc_init_exceptions': ../../gcc/objc/objc-act.c:7745: error: 'darwin_macosx_version_min' undeclared (first use in this function) ../../gcc/objc/objc-act.c:7745: error: (Each undeclared identifier is reported only once ../../gcc/objc/objc-act.c:7745: error: for each function it appears in.) ../../gcc/objc/objc-act.c: In function 'objc_create_init_utf16_var': ../../gcc/objc/objc-act.c:19227: warning: implicit declaration of function 'objc_cvt_utf8_utf16' make[1]: *** [objc/objc-act.o] Error 1 make[1]: Leaving directory `/home/user/Download/gcc-5465/xxx/gcc' make: *** [all-gcc] Error 2 Is there something I'm missing here? I know there is already a gnu implementation of objc but I want to use the features of version 2.0. Any help or suggestions would be GREATLY! appreciated. Compiling objc 2 on linux is one thing. Running it is another. Without the Next Runtime on your linux box, you will not be able to use Obj-C 2. The Next Runtime and the Gnu Runtime are not compatibles. Not to mention that a part of the Apple runtime is in the Foundation framework (like exception handling), and even if you managed to port the Next Runtime on Linux, you will not be able to use it for advanced features. This email sent to site_archiver@lists.apple.com
participants (1)
-
Jean-Daniel Dupas