5

私は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
4

2 に答える 2

3

Compile Objective-C Programs Using gccに は、次のものがあります。

また、-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の回答でも問題が解決する可能性があることに注意してください。そこで参照されているリンクが消えた場合に備えて、問題のブログ投稿 Linux での Compile Objective-C Programs は中国語または日本語などで書かれているため、正確に何を言っているのかわかりませんが、結果は次のようになると思います合格

`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

ヨウザ。-D_NATIVE_OBJC_EXCEPTIONSこのフラグのリストには、他の多くのものとともにが含まれていることに注意してください。記録のために、私のマシンは Debian スクイーズを実行しています。これは、Debian/Ubuntu 固有の問題である可能性があります。わからない。

于 2013-02-03T19:12:23.500 に答える
0

GNUmakefileを作成することをお勧めします。

http://www.gnustep.it/nicola/Tutorials/WritingMakefiles/index.html

そして、gccの使用をやめて、clangに切り替えたほうがよいでしょう。

于 2013-02-04T23:20:49.440 に答える