トップ «前の日記(2005-06-08) 最新 次の日記(2005-06-10)» 編集

じじぃの日記、ツッコミ可

Twitter: @jijixi_org
Xbox Live: jijixi

初心者が書いた OCaml 入門
Spotlight tips サイト内リンク集
1970|01|02|
2003|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|11|
2011|05|
2012|01|

2005-06-09 ぐはぁ!! [長年日記]

% [Mac] Xcode 2.1 に付属の gcc4.0 はユニバーサルバイナリ対応

via MacOS X を Unix として使ってる人の為のスレ その9(2ch)

ぶっちゃけ…

$ cc -arch ppc -arch ppc64 -arch i386 -o hoge hoge.c

これでユニバーサルバイナリができあがるんだそうな。 つーことはあれですよ、gccmakedep が腐ってた件とか、rbconfig.rb が腐ってた件なんかは、実は腐ってたわけじゃなくて、ものすごくさりげない情報リークだったってことですか!?

してやられたぜ……

(追記)

現在インストールされているライブラリはユニバーサルバイナリになっていないので、Xcode に付属のものをリンクしてやる必要がある模様。

gcc -arch i386 -arch ppc -arch ppc64 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk hello.c

参考リンク

% [objc] error: cannot find interface declaration for `NXConstantString'

うーん、なぜだ。Cygwin で @"hoge" っていうディレクティブを使おうとすると、なぜかこんなエラーが出てしまう。

ちなみに @"hoge" ってのは、gnu の runtime だと NXConstantString 、Apple の runtime だと NSConstantString のインスタンスに自動的に変換される(具体的にどの時点でそうなるのかは知らないけど)。 そんで、NSConstantString の場合は NSString のサブクラスになってるので、実質 NSString と同様に使えるわけ。

ともかく、@"hoge" と書くと、"hoge" という文字列リテラルをメンバに持った何らかのインスタンスができ上がるはずなのだ。 実際、MacOSX で試したときにもちゃんと動いたし、FreeBSD で

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

int main(void)
{
   id str = @"Hello World\n";
   printf([str cString]);
   return 0;
}

みたいなサンプルを書いてみたときも、ちゃんと動いてたはずだ。 なのに、Cygwin では上記のようなエラーが出て動かない。 見つからないと言っている interface は NXConstStr.h にちゃんと書いてあるのになあ。

何なんだ、いったい…

% [objc][PC] 順番重要

上記の Cygwin で云々の話、解決編。つーかやっぱりわしって、ヌルい...orz

要するにコンパイルのときのライブラリの指定がまずかった(それにしたってエラーメッセージがおかしいだろ)。 エラーが出るのがこれ…

gcc -lobjc hoge.m

んで、出ないのがこれ…

gcc hoge.m -lobjc

FreeBSD だとどっちでも良いんだよな、たしか。もう Windows なんて(以下略

ちなみに GNUStep なんかだと、

gcc hoge.m -lobjc -lgnustep-base

こんなんでも ld がエラー吐きますね。

gcc hoge.m -lgnustep-base -lobjc

…が正解。 要するに、依存するライブラリはケツの方に持ってこないとあかんらしいです。 何でかは知らん。 ……なんか以前にもこの問題ですったもんだした覚えが(汗

お名前:
E-mail:
コメント:

トップ «前の日記(2005-06-08) 最新 次の日記(2005-06-10)» 編集

日記ってのは本来、自分で読み返すためにあるもんだよなあ……
もしくは有名人になったら死後に本になったりとかか?

RSS はこちら

jijixi at azito.com