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)
上一篇 2025年12月9日 上午8:01
下一篇 2025年12月9日 上午8:22


相关推荐

  • POENIX的BIOS报警声

    POENIX的BIOS报警声

    2021年7月24日
    63
  • AE图床-图床聚合源码

    AE图床-图床聚合源码介绍:一个图床聚合程序,自带鉴黄功能,违规图片智能拦截可以直接复制上传以后的链接以及预览支持5个接口上传,图片都支持https永久免费图床,无需注册,批量上传,即时预览,无限流量,无限外链,永久保存,微博服务器,全网CDN,高速稳定,网页上传,无需插件。支持JPG,GIF,PNG等文件格式。支持远程图片上传。微博图床,围脖是个好图床。网盘下载地址:https://zijiewangpan.com/cH4upvpuqQw图片:…

    2022年5月8日
    46
  • 解决Vue.js not detected的问题

    解决Vue.js not detected的问题前几天遇到了一个问题 在安装完 Vue jsdevtools 后 打开自己写的一个 vue js 网页 发现这个图标并没有亮起来 还是灰色 点击图标显示 Vue jsnotdetecte 打开控制台也没有发现有 vue 的选项网上找了很多解决方案都没有解决 大部分都是让重新安装 Vue jsdevtools 搞了大半天终于解决了 我们先看看 Vue jsdevtools 是否生

    2026年3月16日
    1
  • android bindservice方法,Android bindservice方法返回false

    android bindservice方法,Android bindservice方法返回false我想从另一个类(BaseExpandableListAdapter)的活动中调用一个方法。活动中的方法启动服务并调用bindService(,,)方法。但是,bindService方法总是返回false。我查了其他类似的帖子,但没有一个解决了我的问题。任何评论非常感谢。Androidbindservice方法返回false这里是BaseExpendableListAdapter类中,我调用该方法…

    2022年5月27日
    56
  • JAVA – 虚函数、抽象函数、抽象类、接口

    JAVA – 虚函数、抽象函数、抽象类、接口1. Java虚函数虚函数的存在是为了多态。C++中普通成员函数加上virtual关键字就成为虚函数Java中其实没有虚函数的概念,它的普通函数就相当于C++的虚函数,动态绑定是Java的默认行为。如果Java中不希望某个函数具有虚函数特性,可以加上final关键字变成非虚函数PS: 其实C++和Java在虚函数的观点大同小异,异曲同工罢了。 2. Java抽象函数(纯虚函…

    2022年6月13日
    30
  • JAVA ListNode链表

    JAVA ListNode链表链表结构 在 Java 中用需要自己定义一个 ListNode 类来生成链表对象 自定义的 ListNode 链表类如下 publicclassL intval ListNodenext 下一个链表对象 ListNode intx val x 赋值链表的值 leetcode 第 2 题

    2026年3月18日
    2

发表回复

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

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