ããå建å¨æé¾æ¥åºï¼
ãã1ãçæmoduleæ件ï¼ä¹å°±æ¯.oæ件ãè¿è·ä¸è¬çLinux没ä»ä¹åºå«ã
ããcc -c a.c b.c å°±å¾å°a.oåb.o
ãã2ãç¨ldæ¥å并.oæ件
ããld -r -o c.o a.o b.o è¿ä¸ªä¹æ²¡ä»ä¹ç¹å«ã
ãã3ãç¨libtoolæ¥å建å¨æé¾æ¥åºã
ããlibtool -dynamic -o c.dylib a.o b.o ï¼ è¿éä¹å¯ä»¥ç¨libtool -static -o c.a a.o b.oå°±å建éæåºï¼
ããå¦æç¨gccç´æ¥ç¼è¯ï¼linuxä¸ä¸è¬æ¯ï¼
ããgcc -shared -o c.so a.c b.c
ããèå¨Mac OS Xä¸éè¦ï¼
ããgcc -dynamiclib -o c.dylib a.c b.c
ããè¿å¾å¾ä¹æ¯åMac OS X移æ¤unixç¨åºå¸¸åºé®é¢çå°æ¹ãå¦æç¨autoconf/automakeçå·¥å
·ï¼åºéçå çåºè¯¥å°ä¸äºã
ãã访é®å¨æé¾æ¥åºï¼
ãã1ãnmæ¯æ常ç¨çï¼è¿ä¸ªç¨æ³è·linuxä¸å·®ä¸å¤
ããnm c.dylib å¯ä»¥çå°å¯¼åºç¬¦å·è¡¨ï¼ççã
ãã2ãå¦ä¸ä¸ªå¸¸ç¨çå·¥å
·æ¯otoolï¼è¿ä¸ªæ¯Mac OS Xç¬æçãæ¯å¦æ³ççc.dylibçä¾èµå
³ç³»
ããotool -L c.dylib
ãã对Frameworkçç解ï¼
ããFrameworkæ¯Mac OS Xä¸å¿
ä¸å¯å°çé¨åï¼ä¸å¦¨å»çç/System/Library/Frameworks/ä¸é¢ï¼ä¸å¤§å FrameworkãFrameworkæ¯dylibçè¿ä¸æ¥æ¼åï¼å®æ头æ件ãææ¡£ãå¨æé¾æ¥åºçæ´åæä¸ä¸ªææºçç®å½ï¼ç±»ä¼¼ä¸ç§èªæè¿°çæ¹å¼ï¼è¿ç§åæ³å
¶å®å¨Mac OS Xä¸éå¤å¯è§ãæ¯å¦åºç¨ç¨åºï¼ä¸è¬é½æ¯ä¸ä¸ªç®å½ï¼è¬å¦/Applications/iTunes.appç®å½å¯¹åºåºç¨ç¨åºiTunesï¼åå»è¿ä¸ªç®å½å³å¼å§æ§è¡ãè¿ç§åæ³åWindowsä¸å¸¸è§çä¸ä¸ªexe/dllæ天ä¸å¾ä¸ç¸åã
ããFrameworkçå建工å
·ä¹æ¯libtoolï¼è¯¦ç»ç¨æ³åèmanã
ãã//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ããè¿éä»ç»ä¸ä¸æä¹å¼åæç®åçCocoaç¨åº,è¿ä¸ªç¨åºå®å¨æ¯å¤ªç®å,å 为å¦æä½ ç¨Xcodeçè¯,éç¨Cocoa Foundation Command Toolçè¯,åºè¯¥ä¸ç¨åä»»ä½ä»£ç , ä½æ¯è¿éæ¯ä¸ºäºå大家ä»ç»ä¸ä¸,è¿ä¸ªæç®åçç¨åºæ¯å¦ä½éè¿gccç¼è¯æåç,å½ç¶éé¢è¿æä¸ä¸ªä¸è¥¿å¯ä»¥åä¸ç¹è§£é.
ãã
ããå
ççæºä»£ç :
ãã#import <Foundation/Foundation.h>
ãã
ããint main(int argc, char* argv[])
ãã{
ããNSLog(@"Hello Cocoa From Console");
ããreturn 0;
ãã}
ãã代ç å¾ç®å,ä½ å¯ä»¥ç¨ä½ å欢çä»»ä½ææ¬ç¼è¾å·¥å
·æ¥å®æå®, æºç æ件å为hello.m, è¿æ ·ç®åçä¸ä¸ªç¨åºç¨xcodeçè¯å°±å¤ªå¥¢ä¾äº.
ããok,ä¸é¢æ¥ççæä¹ç¼è¯è¿ä¸ªç¨åº, æå¼ç»ç«¯, cd å°æºæ件æå¨çç®å½,ç¶åæ§è¡ä¸é¢çè¿ä¸ªå½ä»¤,å°±å¯ä»¥çæä¸ä¸ªå«åhelloçç¨åºäº.
ããgcc -framework Foundation hello.m -o hello
ããè¿éé¢éè¦è§£éçæ¯ -framework åæ°, çægccçæåå¯è½ç¥é,gccä¸ç-låæ°å
¶å®æ¯ä¼ éç»ldå½ä»¤ç,æ¯ç¨äºé¾æ¥å¨å·¥ä½ç, macä¸é¢ç-frameworkå-låæ°çæææ¯ä¸æ ·ç,å°±æ¯åè¯ldç¼è¯åçç®æ æ件å¨çææç»çæ§è¡æ件çæ¶å,è¦è¿æ¥åªä¸ªframework, å 为macçæ ¸å¿Darwinä¹æ¯ä¸ä¸ªunix,æ以å¨Macä¸é¢-låæ°ä¹æ¯è¢«æ¯æç.
ããå¦å¤è¿æä¸ç¹, gccè¿å¯ä»¥æ¥å-Læ¥æå®è¦è¿æ¥çlibraryå¨ä»ä¹ä½ç½®,è¿ä¸ªé项ä¸è¬ç¨æ¥è¿æ¥ç¬¬ä¸æ¹çåº, é£ä¹å¦æææ³è¿æ¥ç¬¬ä¸æ¹çFrameworkçæ¶å,æåºè¯¥æä¹åå¢? -L /your/Framework? ä¸å¯¹, gccé对è¿ç§æ
åµä½¿ç¨äºå¦å¤ä¸ä¸ªåæ° -F, æ以å¦æä½ è¦è¿æ¥ç¬¬ä¸æ¹çframework, æ¯å¦/opt/Qt4/QtCore, ä½ åºè¯¥åä¸é¢è¿æ ·ä½¿ç¨gcc.
ããgcc -F/opt/Qt4 -framework QtCore qttest.cpp -o qttest
ãã
ãã好äº,ç°å¨ç»§ç»æ¥è§£éä¸é¢é£ä¸ªç¨åºéé¢çå¦ä¸ä¸ªé®é¢,为ä»ä¹å符串çåé¢å¤äºä¸ª@符å·å¢?æ³å¿
è¿ä¸ªä¸è¥¿ä¹å°æ°äºä¸å°äºº, å¨obj-céé¢@"string"è¿ç§æ¨¡å¼å¨ç¼è¯çæ¶åä¼è¢«ç¼è¯å¨è¿è¡ä¸ä¸ªè½¬æ¢,çæä¸ä¸ªNSStringæéçå®ä¾,æ以å¨éè¦NSStringæéä½ä¸ºåæ°çå°æ¹,å¦æä½ ä¸æ³æç¡®çæé è¿ä¸ªNSStringæé, é£ä¹ç¨è¿ç§æ¹æ³å°±æç®åäº,ä½æ¯å¦æä½ å°@"String"模å¼ç¨å¨äºéè¦c stringçå°æ¹,å°±è¦åºç°é误äºã
ããNote:
ããå 为obj-cé½æ¯ç¨æéæä½çï¼ç¨"å符串"è¿æ ·è¡¨ç¤ºçc stringï¼ææ¾compileræ¯ä¸ç¥éè¿ä¸ª"å符串"çå°ååºè¯¥æ¾å¨å¨åªéãåé¢å 个atï¼é£ä¹@"å符串"çææåºæ¬ä¸æ¯newä¸ä¸ªå«å"å符串"çNSStringï¼å¹¶ä¸è¿åè¿ä¸ªNSStringçå°åã
ããæ以
ãã
ããNSLog("Hello Cocoa From Console");
ããè¿æ ·å°±ä¼åºéï¼
ããNSLog(@"Hello Cocoa From Console");
ããè¿æ ·å°±æ²¡é®é¢ã
温馨提示:答案为网友推荐,仅供参考