作者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