[問題] 請問Release 與Debug之差異

看板MacDev作者 (Bad_To_The_Bone)時間12年前 (2013/05/01 09:27), 編輯推噓3(3022)
留言25則, 4人參與, 最新討論串1/1
請問一下xcode裡面新建的時候就有的configuration 的release與debug的差異在哪呢 由於遇到code一樣的 一個可以build成功 (debug) 另一個就失敗 想知道這兩個的差異在哪 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.72.248.50

05/01 09:29, , 1F
release是會放入release的憑證,主要用來上傳App去審核用的
05/01 09:29, 1F

05/01 11:13, , 2F
也不只,一般release下的compiler參數會不太一樣,通常
05/01 11:13, 2F

05/01 11:13, , 3F
最佳化的程度會比較高,然後拿掉一些debug資訊
05/01 11:13, 3F

05/01 16:33, , 4F
QQ 好怪 我錯誤是Ld undefined symbols for architectu
05/01 16:33, 4F

05/01 16:34, , 5F
re i386
05/01 16:34, 5F

05/01 16:34, , 6F
有沒有設定哪些檔案release要build的 還是都是debug
05/01 16:34, 6F

05/01 16:34, , 7F
跟release 共用檔案?
05/01 16:34, 7F

05/01 16:51, , 8F
ㄟ 不好意思 我剛試了把release的xcconfig改成debug的
05/01 16:51, 8F

05/01 16:51, , 9F
xcconfig 就可以了 看來不是檔案的問題 而是參數
05/01 16:51, 9F
剛剛比對了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)

05/01 19:53, , 10F
妳應該是開了其他人的專案 調整一下SDK就可以了
05/01 19:53, 10F

05/01 19:54, , 11F
i386看起來是要build給OSX的 有一種可能是你SDK選iOS
05/01 19:54, 11F

05/01 19:54, , 12F
可是build arch卻是選i386 以至於出這種錯誤
05/01 19:54, 12F

05/01 19:55, , 13F
恩等等仔細看了一下你的SDK是for OSX沒錯啊 那真怪...
05/01 19:55, 13F

05/01 19:56, , 14F
GCC_OPTIMIZATION_LEVEL相當於-O, -O不太會ln出錯才對
05/01 19:56, 14F

05/02 09:16, , 15F
SDK我有改過了 別人的專案原本是for macsox10.6 10.5的
05/02 09:16, 15F

05/02 10:25, , 16F
我剛剛看了一下專案 目前我的支援只有32/64-bit Intel
05/02 10:25, 16F

05/02 10:26, , 18F
你看一下用這組Architectures是不是就可以ok了
05/02 10:26, 18F

05/02 10:26, , 19F
可能是因為他Supported Architecture有改過名字吧
05/02 10:26, 19F

05/02 16:00, , 20F
我的在xcode介面裡面跟你的截圖的部分一樣唷
05/02 16:00, 20F

05/02 16:00, , 21F
32-bit intel 的好像就會是i386
05/02 16:00, 21F
大大你試試看 /usr/bin/xcodebuild -project 你的PROJ名稱.xcodeproj -target 你的TARGET名稱 -configuration Release build 在shell底下下這行 然後grep i386 我猜應該也是跑這指令i386 ※ 編輯: donkeychen 來自: 211.72.248.50 (05/02 16:04)

05/02 16:53, , 22F
沒這行 他的指令是-arch x86_64
05/02 16:53, 22F

05/02 16:54, , 23F
就說他arch名字改了咩... 他是跟著SDK動的
05/02 16:54, 23F

05/02 16:55, , 24F
05/02 16:55, 24F

05/02 16:55, , 25F
不過-O0會過太匪夷所思了.... -O0 -O4不該影響這個的
05/02 16:55, 25F
文章代碼(AID): #1HW6-3mE (MacDev)
文章代碼(AID): #1HW6-3mE (MacDev)