我是Iphone编程的初学者。我正在尝试编译(ubuntu)。
#import <Foundation/Foundation.h>
int main (void)
{
NSLog (@"Executing");
return 0;
}
我编译了它但得到了以下错误
subhash@subhash-Lenovo-G570:~/grit/iphone/mac$ gcc -lgnustep-base -lpthread -lob
jc -lm -I/usr/local/include/GNUstep -I/usr/include/GNUstep -fconstant-string-cla
ss=NSConstantString hello.m -o hello
In file included from /usr/include/GNUstep/Foundation/NSClassDescription.h:30:0,
from /usr/include/GNUstep/Foundation/Foundation.h:50,
from hello.m:1:
/usr/include/GNUstep/Foundation/NSException.h:42:2: error: #error The current se
tting for native-objc-exceptions does not match that of gnustep-base ... please
correct this.
我跟随http://ubuntuforums.org/showthread.php?p=5593608作为参考。
我评论了NSException.h的#error指令,问题解决了。现在我收到了新的错误。
/tmp/ccQlI9wJ.o: In function `main':
hello.m:(.text+0x11): undefined reference to `NSLog'
/tmp/ccQlI9wJ.o: In function `__objc_gnu_init':
hello.m:(.text+0x2a): undefined reference to `__objc_exec_class'
/tmp/ccQlI9wJ.o:(.data+0x40): undefined reference to `__objc_class_name_NSConsta
ntString'
collect2: ld returned 1 exit status
答案 0 :(得分:3)
有以下
另请注意,如果您没有包含-D_NATIVE_OBJC_EXCEPTIONS,那么 可能会遇到以下错误:
/usr/include/GNUstep/Foundation/NSException.h:42:2: error: #error The current setting for native-objc-exceptions does not match that of gnustep-base ... please correct this.
我遇到与原始海报相同的错误,并通过-D_NATIVE_OBJC_EXCEPTIONS
标志为我解决了问题。
我试图做一些非常不标准的事情,所以它可能不适用于所有人。
请注意,shalki的答案也可能解决问题。如果那里引用的链接消失, 有问题的博文, Compile Objective-C Programs on Linux 是中文或日文或类似的东西,所以我不确切地知道它在说什么,但我认为结果是 通过
`gnustep-config --objc-flags`
作为gcc的论据。帖子有
gcc `gnustep-config --objc-flags` hello.m -o hello -I /usr/include/GNUstep/ -L /usr/lib/GNUstep/ -lgnustep-base
最后。现在,在我的计算机上,gnustep-config --objc-flags
扩展为
-MMD -MP -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGNUSTEP_BASE_LIBRARY=1 -D_REENTRANT -fPIC -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -O2 -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -fgnu-runtime -fconstant-string-class=NSConstantString -I. -I/home/faheem/GNUstep/Library/Headers -I/usr/local/include/GNUstep -I/usr/include/GNUstep
Yowza。请注意,此标志列表包含-D_NATIVE_OBJC_EXCEPTIONS
以及许多其他内容。为了记录,我的机器正在运行Debian挤压。这可能是Debian / Ubuntu特有的问题。我不确定。
答案 1 :(得分:0)
最好写一个GNUmake文件。
http://www.gnustep.it/nicola/Tutorials/WritingMakefiles/index.html
最好停止使用gcc并切换到clang。