作者donkeychen (Bad_To_The_Bone)
看板MacDev
标题[问题] 请问Release 与Debug之差异
时间Wed May 1 09:27:28 2013
请问一下xcode里面新建的时候就有的configuration
的release与debug的差异在哪呢
由於遇到code一样的
一个可以build成功 (debug)
另一个就失败
想知道这两个的差异在哪
感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.72.248.50
1F:→ darktt:release是会放入release的凭证,主要用来上传App去审核用的 05/01 09:29
2F:推 Blueshiva:也不只,一般release下的compiler参数会不太一样,通常 05/01 11:13
3F:→ Blueshiva:最佳化的程度会比较高,然後拿掉一些debug资讯 05/01 11:13
4F:→ donkeychen:QQ 好怪 我错误是Ld undefined symbols for architectu 05/01 16:33
5F:→ donkeychen:re i386 05/01 16:34
6F:→ donkeychen:有没有设定哪些档案release要build的 还是都是debug 05/01 16:34
7F:→ donkeychen:跟release 共用档案? 05/01 16:34
8F:→ donkeychen:ㄟ 不好意思 我刚试了把release的xcconfig改成debug的 05/01 16:51
9F:→ donkeychen:xcconfig 就可以了 看来不是档案的问题 而是参数 05/01 16:51
刚刚比对了xcconfig里面的内容
原本release -> release.xcconfig => fail
debug -> debug.xcconfig => success
测试
release -> debug.xcconfig => success
接着我把debug.xcconfig里面一行一行加到release.xcconfig里面
发现
加入
GCC_OPTIMIZATION_LEVEL = 0
就可以了
xcode 3.2
共用的设定是
SDKROOT macosx10.8
GCC_VERSION com.apple.compilers.llvmgcc42
MACOSX_DEPLOYMENT_TARGET = 10.8
错误是
Ld xxxxx normal i386
时出错
错误讯息是
Undefined symbols for architecture i386
※ 编辑: donkeychen 来自: 211.72.248.50 (05/01 17:27)
10F:推 Killercat:你应该是开了其他人的专案 调整一下SDK就可以了 05/01 19:53
11F:→ Killercat:i386看起来是要build给OSX的 有一种可能是你SDK选iOS 05/01 19:54
12F:→ Killercat:可是build arch却是选i386 以至於出这种错误 05/01 19:54
13F:→ Killercat:恩等等仔细看了一下你的SDK是for OSX没错啊 那真怪... 05/01 19:55
14F:→ Killercat:GCC_OPTIMIZATION_LEVEL相当於-O, -O不太会ln出错才对 05/01 19:56
15F:→ donkeychen:SDK我有改过了 别人的专案原本是for macsox10.6 10.5的 05/02 09:16
16F:推 Killercat:我刚刚看了一下专案 目前我的支援只有32/64-bit Intel 05/02 10:25
18F:→ Killercat:你看一下用这组Architectures是不是就可以ok了 05/02 10:26
19F:→ Killercat:可能是因为他Supported Architecture有改过名字吧 05/02 10:26
20F:→ donkeychen:我的在xcode介面里面跟你的截图的部分一样唷 05/02 16:00
21F:→ donkeychen:32-bit intel 的好像就会是i386 05/02 16:00
大大你试试看
/usr/bin/xcodebuild -project 你的PROJ名称.xcodeproj -target
你的TARGET名称 -configuration Release build
在shell底下下这行 然後grep i386
我猜应该也是跑这指令i386
※ 编辑: donkeychen 来自: 211.72.248.50 (05/02 16:04)
22F:→ Killercat:没这行 他的指令是-arch x86_64 05/02 16:53
23F:→ Killercat:就说他arch名字改了咩... 他是跟着SDK动的 05/02 16:54
25F:→ Killercat:不过-O0会过太匪夷所思了.... -O0 -O4不该影响这个的 05/02 16:55