{"id":2252,"date":"2011-07-05T18:18:48","date_gmt":"2011-07-05T09:18:48","guid":{"rendered":"http:\/\/www.moonmile.net\/blog\/?p=2252"},"modified":"2011-07-05T18:18:48","modified_gmt":"2011-07-05T09:18:48","slug":"clangllvm-%e3%81%a7-objective-c-2-0-%e3%82%92%e3%82%b3%e3%83%b3%e3%83%91%e3%82%a4%e3%83%ab%e3%81%99%e3%82%8b","status":"publish","type":"post","link":"http:\/\/www.moonmile.net\/blog\/archives\/2252","title":{"rendered":"clang+llvm \u3067 objective-c 2.0 \u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3059\u308b"},"content":{"rendered":"<p>LLVM-GCC 4.2 Front End Binaries for Mingw32\/x86<br \/>\n<a href=\"http:\/\/llvm.org\/releases\/download.html#2.9\">http:\/\/llvm.org\/releases\/download.html#2.9<\/a><br \/>\nKMC Staff Blog:Clang \u3068 LLVM \u3092\u4f7f\u3063\u3066\u307f\u308b\u3002<br \/>\n<a href=\"http:\/\/blog.kmckk.com\/archives\/2435798.html\">http:\/\/blog.kmckk.com\/archives\/2435798.html<\/a><\/p>\n<p>\u5b9f\u306f\u3001\u3088\u304f\u5206\u304b\u3089\u3093\u3068\u3044\u3046\u306e\u304c\u672c\u97f3\u3067\u3059\u304c\u3001mingw + gnustep \u306e\u7d44\u307f\u5408\u308f\u305b\u3060\u3068 objective-c \u306e @property \u304c\u30b3\u30f3\u30d1\u30a4\u30eb\u3067\u304d\u307e\u305b\u3093\u3002<\/p>\n<p>\u306a\u306e\u3067\u3001\u5148\u306e\u30ea\u30f3\u30af\u304b\u3089\u2193\u306e3\u3064\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u304d\u3066 c:\\llvm \u3068\u304b\u306b\u79fb\u52d5<\/p>\n<p>Clang Binaries for Mingw32\/x86 (23M)(.sig)<br \/>\nLLVM Binaries for Mingw32\/x86 (23M)(.sig)<br \/>\nLLVM-GCC 4.2 Front End Binaries for Mingw32\/x86 (26M) (.sig)<\/p>\n<p>\u5225\u306b\u5165\u3063\u3066\u3044\u308b<\/p>\n<p>GNUstep Windows Installer<br \/>\n<a href=\"http:\/\/www.gnustep.org\/experience\/Windows.html\">http:\/\/www.gnustep.org\/experience\/Windows.html<\/a><\/p>\n<p>\u306e include \u3092\u8a2d\u5b9a\u3059\u308b\u3068\u3001@property \u304c\u3046\u307e\u304f\u30b3\u30f3\u30d1\u30a4\u30eb\u3067\u304d\u307e\u3059\u3002\u304b\u3064\u3001\u3046\u307e\u304f\u52d5\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"brush: objc; title: ; notranslate\" title=\"\">\r\n#import &lt;stdio.h&gt;\r\n#import &lt;Foundation\/Foundation.h&gt;\r\n#import &lt;Foundation\/NSObject.h&gt;\r\n\r\n@interface Hello: NSObject\r\n{\r\n\t@private\r\n\tNSString *_msg ;\r\n}\r\n@property (nonatomic,retain) NSString *msg;\r\n@end\r\n\r\n@implementation Hello\r\n@synthesize msg = _msg ;\r\n\r\n- (void)print\r\n{\r\n\t\/\/ NSLog( _msg );\r\n\tprintf(&amp;quot;%s\\n&amp;quot;, &#x5B;_msg cString]);\r\n}\r\n- (void)dealloc\r\n{\r\n\tNSLog( @&amp;quot;in dealloc&amp;quot; );\r\n\t&#x5B;super dealloc];\r\n}\r\n@end\r\n\r\n\r\nint main(int argc, char *argv&#x5B;])\r\n{\r\n\tputs(&amp;quot;hello obj-c world.&amp;quot;);\r\n\tHello *hello = &#x5B;&#x5B;Hello alloc] init];\r\n\thello.msg = @&amp;quot;hello objc world.&amp;quot;;\r\n\t&#x5B;hello print];\r\n\t&#x5B;hello release];\r\n\r\n\treturn 0;\r\n}\r\n<\/pre>\n<p>\u3053\u3093\u306a\u98a8\u306b @property \u3092\u4f7f\u3063\u305f\u30b3\u30fc\u30c9\u3092\u66f8\u3044\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n<p>\u305d\u3057\u3066\u3001\u6700\u521d\u306f clang \u3060\u3051\u3067\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u307f\u308b\u3068\u3002<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nclang -o main3 main3.m -I \/llvm\/include -I \/GNUstep\/GNUstep\/System\/Library\/Headers -L c:\/GNUstep\/GNUstep\/System\/Library\/Libraries -lobjc -lgnustep-base -fconstant-string-class=NSConstantString\r\n<\/pre>\n<p>\u306e\u3088\u3046\u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u5b9f\u884c\u3059\u308b\u3068\u3001\u6b21\u306e\u3088\u3046\u306b\u3046\u307e\u304f\u52d5\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nC:\\work\\alice\\objc&gt;main3\r\nhello obj-c world.\r\n2011-07-05 18:12:32.113 main3&#x5B;2400] in dealloc\r\n<\/pre>\n<p>\uff5e\uff5e\uff5e<\/p>\n<p>\u8a66\u3057\u306b vm \u4e0a\u3067\u52d5\u304b\u3057\u3066\u307f\u3088\u3046\u3068 <\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nclang -emit-llvm -S main3.m -I \/llvm\/include -I \/GNUstep\/GNUstep\/System\/Library\/Headers\r\nllvm-as main3.s\r\nlli main3.s.bc\r\n<\/pre>\n<p>\u306a\u98a8\u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u307e\u3057\u305f\u304c\u3001<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nC:\\work\\alice\\objc&gt;lli main3.s.bc\r\nLLVM ERROR: Program used external function &#039;__objc_exec_class&#039; which could not b\r\ne resolved!\r\nStack dump:\r\n0.      Program arguments: lli main3.s.bc\r\n1.      Running pass &#039;X86 Machine Code Emitter&#039; on function &#039;@.objc_load_functio\r\nn&#039;\r\n<\/pre>\n<p>\u306a\u98a8\u306b\u5b9f\u884c\u30a8\u30e9\u30fc\u306b\u306a\u308a\u307e\u3059\u306d\u3002objc \u306e\u30e9\u30f3\u30bf\u30a4\u30e0\u3092 clang \u3067\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u914d\u7f6e\u3059\u308b\u3093\u3067\u3057\u3087\u3046\u304c\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>LLVM-GCC 4.2 Front End Binaries for Mingw32\/x86 http:\/\/llvm.org\/releases\/download.html#2.9 KMC Staff Blog:Clan &hellip; <a href=\"http:\/\/www.moonmile.net\/blog\/archives\/2252\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":2742,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3,28],"tags":[],"class_list":["post-2252","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev","category-objc"],"jetpack_featured_media_url":"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2012\/01\/windows-objective-c-title.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/2252","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/comments?post=2252"}],"version-history":[{"count":2,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/2252\/revisions"}],"predecessor-version":[{"id":3509,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/2252\/revisions\/3509"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/media\/2742"}],"wp:attachment":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/media?parent=2252"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/categories?post=2252"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/tags?post=2252"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}