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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python3在pycharm中为什么导入random模块不能用? TypeError: ‘module’ object is not callable…

    python3在pycharm中为什么导入random模块不能用? TypeError: ‘module’ object is not callable…

    2021年10月22日
    128
  • 缓冲区溢出漏洞_电脑基于堆栈的缓冲区溢出

    缓冲区溢出漏洞_电脑基于堆栈的缓冲区溢出缓冲区溢出缓冲区溢出是指当计算机向缓冲区内填充数据时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。理想的情况是:程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下了隐患。操作系统所使用的缓冲区,又被称为”堆栈”。在各个操作进程之间,指令会被临时储存在“堆栈”中,“堆栈”也会出现缓冲区溢出。缓冲区溢出的危害…

    2025年6月12日
    5
  • python的学生信息管理系统_学员信息管理系统设计

    python的学生信息管理系统_学员信息管理系统设计一.系统需求使用面向对象编程思想完成学员管理系统的开发,具体如下:系统要求:学员数据存储在文件中系统功能:添加学员、删除学员、修改学员信息、查询学员信息、显示所有学员信息、保存学员信息及退出系统等功能。程序文件如下:程序入口文件:main.py学员文件:student.py管理系统⽂文件:managerSystem.pymain.py#1.导入managerSystem模块frommanagerSystemimport*#2.启动学员管理系统if__name__

    2026年1月30日
    4
  • 电脑磁盘未知没有初始化_win7怎么进去计算机管理

    电脑磁盘未知没有初始化_win7怎么进去计算机管理win7系统想必大家都非常熟悉吧,然而有时候可能会碰到win7系统电脑新增的硬盘没有初始化的情况,想必大家都遇到过win7系统电脑新增的硬盘没有初始化的情况吧,那么应该怎么处理win7系统电脑新增的硬盘没有初始化呢?我们依照  1、当正常增加新硬盘后,登录系统,打开磁盘管理,系统会自动打开【磁盘初始化和转换向导】,单击“下一步”; 2、正确选择要初始化的磁盘,单击“下一步”;这样的步骤就行了;下…

    2022年9月21日
    4
  • pcanywhere要开端口[通俗易懂]

    pcanywhere要开端口[通俗易懂]默认为5631和5632.[@more@]…

    2025年11月7日
    2
  • listnode.val java(string indexof方法)

    ListNode是由自己定义的java中的链表对象类结构如下publicclassListNode{intval;ListNodenext;publicListNode(intx){val=x;}}初始化时必须传值有一列1.给出Input:(2->4->3)+(5->6->4)要求Output:7->0->…

    2022年4月17日
    66

发表回复

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

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