linux release 版本的区别,编译debug版本和编译release版本的区别

linux release 版本的区别,编译debug版本和编译release版本的区别大项目的版本编译会区别 debug 和 release 那 debug 和 release 会有什么区别呢 通过对比这两者的编译选项可以找到答案 1 对比编译过程 debug DOS LINUX DDEBUG VERSION fno builtin pipe Wall fsigned char g mlongcall DCPU PPC85XX mcpu 8548 mstrict ali

大项目的版本编译会区别debug和release,那debug和release会有什么区别呢?

通过对比这两者的编译选项可以找到答案。

1.对比编译过程

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优化的时候要加上-fno-strict-aliasing -fno-schedule-insns2以防止强制类型转化出问题,加上-fno-omit-frame-pointer是强制使用frame pointer方便调试

对比debug和release编译选项可以发现最大的区别是是用-g选项还是使用-O2选项

2.对比链接过程

在进程链接时,debug和release的链接选项都一致,链接选项如下:

-rdynamic -Wl,–relax,-rpath,/version/lib

注:选项-rdynamic 用来通知链接器将所有符号添加到动态符号表中 (目的是能够通过使用 dlopen 来实现向后跟踪

-Wl选项告诉编译器将后面的参数传递给链接器

–relax,-rpath动态库链接选项

3.所以总的来说,debug和release版本的区别一个是编译.c的编译选项,debug使用了-g选项,release使用了-O2选项

阅读(1514) | 评论(0) | 转发(0) |

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231499.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • springcloud学习(三)之Hystrix

    springcloud学习(三)之Hystrix前言雪崩效应在微服务架构中,⼀个应⽤可能会有多个微服务组成,微服务之间的数据交互通过远程过程调⽤完成。这就带来⼀个问题,假设微服务A调⽤微服务B和微服务C,微服务B和微服务C⼜调⽤其它的微服务,

    2022年7月4日
    22
  • 国产操作系统: 盘点8款国产Linux桌面操作系统[通俗易懂]

    国产操作系统: 盘点8款国产Linux桌面操作系统[通俗易懂]2014年4月8日起,美国微软公司停止了对WindowsXPSP3操作系统提供服务支持,这引起了社会和广大用户的广泛关注和对信息安全的担忧。在这种背景下,国家出于计算机安全考虑,加大了针对操作系统开发力度,各软件企业纷纷开发自主操作系统。国产操作系统多以Linux为基础二次开发,今天我们为大家盘点一下二零一八年值得用户使用的国产Linux桌面操作系统。1.深度操作系统…

    2022年5月13日
    90
  • vue中splice和$emit使用

    vue中splice和$emit使用splice函数用法splice(index,len,[item])它也可以用来替换/删除/添加数组内某一个或者几个值(该方法会改变原始数组)ndex:数组开始下标len: 替换/删除的长度item:替换的值,删除操作的话 item为空删除://删除起始下标为1,长度为1的一个值(len设置1,如果为0,则数组不变)var arr = [‘a’,…

    2022年6月13日
    30
  • pandas apply() 函数用法

    pandas apply() 函数用法理解pandas的函数,要对函数式编程有一定的概念和理解。函数式编程,包括函数式编程思维,当然是一个很复杂的话题,但对今天介绍的apply()函数,只需要理解:函数作为一个对象,能作为参数传递给其它函数,并且能作为函数的返回值。函数作为对象能带来代码风格巨大的改变。举一个例子,有一个包含1到10的list,从其中找出能被3整除的数字。用传统的方法:defcan_divi…

    2022年6月22日
    28
  • 【Linux】Linux中常用操作命令

    【Linux】Linux中常用操作命令

    2021年9月22日
    47
  • 逻辑回归原理_逻辑回归代码

    逻辑回归原理_逻辑回归代码此文章为初学机器学习时,对AndrewNG《机器学习》课程整理所写,也参考了其他CSDN同学的笔记,写的较为粗糙,很多网友帮助我指正了问题,现在重新更新向量化部分,并加入实践篇。什么是逻辑回归?Logistic回归与多重线性回归实际上有很多相同之处,最大的区别就在于它们的因变量不同,其他的基本都差不多。正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalizedli…

    2025年6月19日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号