cmake 中的“-O2”选项从何而来以及如何删除它?

问题描述 投票:0回答:1

我正在尝试在 opensuse 15.5 上从源代码重建 rpm 包 perl-BSSolv 并使用新的构建包进行调试。在开始构建 debuginfo 包之前,我需要删除优化选项 -O2 或 -O3。这是我尝试过的: 我在 CMakeLists.txt 中更改行如下:

set (CMAKE_C_FLAGS     "${CMAKE_C_FLAGS} -Wall")
set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -O2")
set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS} -g -O0")
set (CMAKE_C_FLAGS_DEBUG     "${CMAKE_C_FLAGS} -g3 -O0")

set (CMAKE_C_FLAGS      -Wall")
set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -O0")
set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS} -g -O0")
set (CMAKE_C_FLAGS_DEBUG     "${CMAKE_C_FLAGS} -g3 -O0")

然后运行 rpmbuild -ba SPEC/xxx.spec 来重建软件包并使用以下命令重新安装软件包:

rpm -ivh --replacepkgs --replacefiles RPMS/x86_64/xxx-*.rpm

但是当我安装新的软件包并尝试使用 gdb 进行调试时,仍然存在一些意外的结果,例如变量被优化以及代码中意外的跳转 运行以下命令:

readelf --debug-dump=info FILE_I_BUILD.so|grep  "DW_AT_producer"

我可以看到如下输出:

   <3592>   DW_AT_producer    : (indirect string, offset: 0x1d): GNU AS 2.43.1
    <35a5>   DW_AT_producer    : (indirect string, offset: 0x655): GNU C11 7.5.0 -mtune=generic -march=x86-64 -g -O2 -fwrapv -fno-strict-aliasing -fstack-protector-strong -fmessage-length=0 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -fPIC
    <2e83f>   DW_AT_producer    : (indirect string, offset: 0xb77b): GNU C11 7.5.0 -m64 -mtune=generic -march=x86-64 -g -g -O2 -O2 -O0 -fmessage-length=0 -fPIC -fmessage-length=0 -fstack-protector -funwind-tables -fasynchronous-unwind-tables

“-O2”选项仍然存在,似乎我在 CMakeLists.txt 中的设置在构建包时没有更改优化选项。 这个“-O2”选项从哪里来?如何删除它?

linux gcc cmake suse
1个回答
0
投票

salesforce_metadata_map = { ".cls": "顶点类", ".trigger": "顶点触发器", ".page": "顶点页面", ".cmp": "顶点组件", ".testsuite": "Apex 测试套件", ".app": "应用程序", ".approvalprocess": "审批流程", ".flow": "自动启动的流程", ".assignmentrule": "案例分配规则", ".escalationrule": "案件升级规则", ".milestone": "案例里程碑", ".certificate": "证书", ".community": "社区", ".connectedapp": "连接的应用程序", ".contentchannel": "内容频道", ".contentversion": "内容版本", ".field": "自定义字段", ".labels": "自定义标签", ".object": "自定义对象", ".customsetting": "自定义设置", ".custommetadatatype": "自定义元数据类型", ".dashboard": "仪表板", ".datacategorygroup": "数据类别组", ".dataextension": "数据扩展名", ".document": "文档", ".email": "电子邮件模板", ".endpoint": "端点", ".environmenthub": "环境中心", ".externaldatasource": "外部数据源", ".externalservice": "外部服务", ".flowresource": "流资源", ".globalvalueset": "全局值集", ".group": "组", ".homepagecomponent": "主页组件", ".inboundmessage": "入站消息", ".layout": "布局", ".mobileapp": "移动应用程序", ".namedcredential": "命名凭证", ".network": "网络", ".notificationtype": "通知类型", ".objectpermissions": "对象权限", ".permissionset": "权限集", ".platformevent": "平台事件", ".policy": "政策", ".postinstall": "安装后脚本", ".profile": "个人资料", ".queue": "队列", ".recordtype": "记录类型", ".remotesitesetting": "远程站点设置", ".report": "报告", ".resource": "静态资源", ".role": "角色", ".samlsso": "Saml SSO 设置", ".searchlayout": "搜索布局", ".sharingrule": "共享规则", ".site": "站点", ".subjectarea": "主题区域", ".synonymdictionary": "同义词词典", ".testsuite": "测试套件", ".translation": "翻译", ".user": "用户", ".userpermissions": "用户权限", ".weblink": "网页链接", ".workflow": "工作流程规则", ".x509certificate": "X.509 证书", # 对于 Lightning Web 组件 (LWC),我们可以对不同的文件类型使用嵌套字典: ".html": "Lightning 组件包 (LWC) - 模板", ".js": "Lightning 组件包 (LWC) - 控制器", ".xml": "Lightning 组件包 (LWC) - 配置" }

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.