linux release 版本的区别,编译debug版本和编译release版本的区别
大項(xiàng)目的版本編譯會(huì)區(qū)別debug和release,那debug和release會(huì)有什么區(qū)別呢?
通過(guò)對(duì)比這兩者的編譯選項(xiàng)可以找到答案。
1.對(duì)比編譯過(guò)程
debug:
-DOS_LINUX ?-DDEBUG_VERSION -fno-builtin -pipe -Wall -fsigned-char -g
-mlongcall -DCPU=PPC85XX ? ?-mcpu=8548 -mstrict-align -fno-defer-pop -DTOR202 -DTOOL_FAMILY=gnu -DTOOL=gnu -DSYS32 -DXOS_TOOLCHAIN_4_1_2
-DSTRUCTURE_ATTR="__attribute__ ((packed))" -DINSTALL_R_CPU=1
release:
-DOS_LINUX ?-DRELEASE_VERSION -fno-builtin -pipe -Wall -fsigned-char -O2
-mlongcall -DCPU=PPC85XX ? ?-mcpu=8548 -mstrict-align -fno-defer-pop -DTOR202 -DTOOL_FAMILY=gnu -DTOOL=gnu -DSYS32 -DXOS_TOOLCHAIN_4_1_2
-fno-strict-aliasing -fno-schedule-insns2 ?-fno-omit-frame-pointer
注:在使用-O2優(yōu)化的時(shí)候要加上-fno-strict-aliasing -fno-schedule-insns2以防止強(qiáng)制類型轉(zhuǎn)化出問(wèn)題,加上-fno-omit-frame-pointer是強(qiáng)制使用frame pointer方便調(diào)試
對(duì)比debug和release編譯選項(xiàng)可以發(fā)現(xiàn)最大的區(qū)別是是用-g選項(xiàng)還是使用-O2選項(xiàng)
2.對(duì)比鏈接過(guò)程
在進(jìn)程鏈接時(shí),debug和release的鏈接選項(xiàng)都一致,鏈接選項(xiàng)如下:
-rdynamic -Wl,--relax,-rpath,/version/lib
注:選項(xiàng)-rdynamic 用來(lái)通知鏈接器將所有符號(hào)添加到動(dòng)態(tài)符號(hào)表中 (目的是能夠通過(guò)使用 dlopen 來(lái)實(shí)現(xiàn)向后跟蹤
-Wl選項(xiàng)告訴編譯器將后面的參數(shù)傳遞給鏈接器
--relax,-rpath動(dòng)態(tài)庫(kù)鏈接選項(xiàng)
3.所以總的來(lái)說(shuō),debug和release版本的區(qū)別一個(gè)是編譯.c的編譯選項(xiàng),debug使用了-g選項(xiàng),release使用了-O2選項(xiàng)
閱讀(1514) | 評(píng)論(0) | 轉(zhuǎn)發(fā)(0) |
總結(jié)
以上是生活随笔為你收集整理的linux release 版本的区别,编译debug版本和编译release版本的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pe误删usb怎么恢复 PE系统误删US
- 下一篇: (二)linux内核镜像制作