Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用GCC编译Objective-C代码?_Objective C_Gcc - Fatal编程技术网

如何用GCC编译Objective-C代码?

如何用GCC编译Objective-C代码?,objective-c,gcc,Objective C,Gcc,当我试图编译这段代码时,我用gcc得到了以下格式: #import <stdio.h> #import <objc/Object.h> @interface Hello: Object - (void) init; - (void) say; @end @implementation Hello - (void) init { [super init]; } - (void) say { printf("Hello, world!\n"); } @end i

当我试图编译这段代码时,我用gcc得到了以下格式:

#import <stdio.h>
#import <objc/Object.h>

@interface Hello: Object
- (void) init;
- (void) say;
@end

@implementation Hello
- (void) init {
  [super init];
}
- (void) say {
  printf("Hello, world!\n");
}
@end

int main() {
  Hello *hello = [Hello new];
  [hello say];
  [hello free];
  return 0;
}
如果我试着跑-我会得到SIGSEGV:

$> ./test
$> Segmentation fault
我做错了什么

env:linux-x86_64,gcc-4.7.2


谢谢。

那个代码错了。而且很古老。它永远不会起作用。现在它已经(修复并添加了一些额外的示例)

首先,检查是否安装了GNUStep。如果这样做,请切换到使用NSObject和libFoundation(实际上是
libgnustepbase
,正如弗雷德在评论中指出的那样)

其次,[IIRC——在这里抓取旧的脑细胞,
init
仍然返回(id),而Object仍然是根类。由于在
init
方法中没有做任何有用的事情,只需将其完全删除即可


编译器错误表明您的
Hello
子类没有正确地从
对象继承,这毫无意义。

它应该是
-x objective-c
而不是
-x objective-c++
?@KevinDTimm,同样的错误。@bumm,维基百科再次撒谎。谢谢你。@niXman这不是撒谎,只是不适合剪切和粘贴。请允许我为尼克斯曼更正bbum的评论,在GNUstep it的libgnustep base中,libFoundation实际上是作为一个不同的项目存在的,在某些情况下,或者曾经可以与libgnustep-base互换。感谢您的更正——自从我在Linux上编译ObjC以来,已经有十多年了。事实上,维基百科的文章一直在撒谎,直到我修正了它。代码不起作用,neve也会有。啊,我以为他指的是Objective-C文章。
$> ./test
$> Segmentation fault