gcc -rdynamic参数解释

GCC命令与参数详解 使用 GCC 需要对编译的四个阶段(编译过程),以及编译的规则有一定的了解,熟悉使用 GCC 对于编写 Makefile 具有决定性的作用。GCC 的命令使用非常灵活,命令都以 gcc 开头然后配合待编译文件名,编译选项即可(可以说 GCC 就只有一条命令,只是编译选项较多而已)。命令选项可以随意组合,只需要注意选项是否包含参数即可,如果选项包含参数则参数需要紧紧跟随在选项后方。 阅读详情

 选项 -rdynamic 用来通知链接器将所有符号添加到动态符号表中
(目的是能够通过使用 dlopen 来实现向后跟踪)
-rdynamic
Pass the flag ‘-export-dynamic’ to the ELF linker, on targets that support
it. This instructs the linker to add all symbols, not only used ones, to the
dynamic symbol table. This option is needed for some uses of dlopen or to
allow obtaining backtraces from within a program.

 

GNU Toolchain —— (二)GCC参数详解 gcc是gnu compiler collection 的简称,他包含了多种语言的编译器,如C,C++,Objective-C,Objective-C++,Java,Fortran,andAda。但每种编译器的名字不一样,gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理 阅读详情

相关推荐

编译链接实战(15)-rdynamic选项导出所有符号到动态符号表

而使用 -rdynamic 选项重新编译程序时,会将所有符号导出到动态符号表中,backtrace_symbols 函数可以从动态符号表中查询到相应的符号信息,从而得到更详细的调用链信息,例如函数名、参数和行号等。默认链接器在产生可执行文件时,只会将那些链接时被其他共享模块引用到的符号放到动态符号表中,这样可以减少动态符号表的大小,也就是说,在共享模块中反向引用主模块中的符号时,只有那些在链接时被共享模块引用到的符号才会被导出。这样,在运行时,可执行文件将包含完整的符号信息,包括函数名、全局变量等。

二进制君 1983

链接选项 -rdynamic与动态符号表

注意,这是链接选项,而不是编译选项。在将c文件编译成.o的过程中,使用rdynamic是没有任何效果的。只有将.o链接成elf时,才有效果。这主要是对可执行程序而言的,而编译动态库时,即使没有rdynamic选项,默认也会将非静态函数放入动态符号表中(刻意隐藏的函数除外)。一个验证方法显示可执行程序文件内的动态符号(注意,仅仅是动态符号):readelf -Ds a.out默认情况下,可执行程序(...

bobbypollo的专栏 1万+

gcc: 选项 -rdynamic;cmake错误一例

这个选项的意义是,向ELF链接器发送一个标记:‘-export-dynamic’,当然发送的前提是链接器支持这个标记。具体的规则在文件:“/usr/share/cmake/Modules/Platform/Linux-GNU.cmake”导致的问题是cmake的默认规则里又有这么个test 编译器的步骤就会导致cmake执行错误。因为这个选项受某些gcc本身编译时的配置控制,所以有些gcc版本不支持这个选项。如果不支持,可能需要别的方式将这个-export-dynamic 传递过去。

mzhan017的博客 1583

gcc选项-g与-rdynamic的异同

转自:http://www.lenky.info/archives/2013/01/2190 gcc的-g,应该没有人不知道它是一个调试选项,因此在一般需要进行程序调试的场景下,我们都会加上该选项,并且根据调试工具的不同,还能直接选择更有针对性的说明,比如-ggdb。-g是一个编译选项,即在源代码编译的过程中起作用,让gcc把更多调试信息(也就包括符号信息)收集起来并将存放到最终的可执行文件内。 相比-g选项,-rdynamic却是一个连接选项,它将指示连接器把所有符号(而不仅仅只是程...

zz460833359的博客 3004

Linux下Catapro酶动力学预测工具保姆级安装指南(PyTorch+CUDA11.8适配版)

本文提供了Linux系统下Catapro酶动力学预测工具的详细安装指南,特别适配PyTorch+CUDA11.8环境。从环境准备、源码获取到虚拟环境创建、依赖包安装和模型配置,逐步指导用户完成安装流程,并包含常见问题排查和性能优化建议,帮助研究者快速部署这一高效酶动力学参数预测工具。

weixin_29278805的博客 213

多智能体强化学习中的Trust Region技术:HATRPO与HAPPO深度解析

本文深度解析多智能体强化学习中的Trust Region技术,重点探讨HATRPO(异质智能体信任区域策略优化)与HAPPO(异质智能体近端策略优化)两种先进算法。通过数学架构与工程实现细节,揭示其在解决联合策略空间爆炸、信用分配等挑战中的优势,并分享实际部署中的优化技巧与前沿进展。

weixin_29072299的博客 191

linux下打印堆栈方法 锦集

1、编译时一定要加上参数(-g -rdynamic).     不加-rdynamic的效果就是:   ./a.out [0x8048469] ./a.out [0x80484fa] ./a.out [0x8048512] /lib/libc.so.6(__libc_start_main+0xdc) [0x4b863f2c] ./a.out [0x80483b1]   加-r

Season@HangZhou 专栏 799

保姆级教程:用ESP32和SPH0645麦克风做个无线录音笔(附Python服务端实时播放)

本文提供了一份详细的ESP32无线录音笔开发指南,涵盖从硬件搭建到Python服务端实时回放的全过程。通过SPH0645麦克风采集高质量音频数据,利用ESP32的I2S接口和WiFi功能实现无线传输,并结合Python服务端实现实时播放和WAV文件保存,适合远程音频监控和创意交互装置开发。

weixin_30700099的博客 643

gcc中-rdynamic参数的作用

【代码】gcc中-rdynamic参数的作用。

最后一个bug的博客 843

Labwindows CVI写上位机与STM32下位机通信(二)

接着上篇,这篇主要谈谈流量计数据读取。我们使用的MEMS流量计采用Modbus协议Modbus 使用RS-485 作为硬件载体。 一. Modbus协议   该协议定义了 Modbus 总线Master(主设备)与Slave(从设备)之间的通讯报文格式,对于主设备来说,Modbus 协议是联系上位机(如PC、PLC、HMI 等)的接口,而且所有的通讯都是“透明的”。控制器通信使用主-从技术,即

yang2011079080010的专栏 1万+

LangChain + Milvus Lite:从零搭建本地RAG知识库

本文详细介绍了如何利用LangChain、Milvus Lite和gte-large-zh模型,在本地从零搭建一个完整的RAG知识库系统。文章涵盖了环境配置、文档处理与向量化、本地向量库构建以及检索问答实现的全流程,重点突出了完全本地化部署带来的数据隐私安全和成本优势,为开发者提供了一条实践性极强的技术路径。

weixin_29044713的博客 444

rdynamic参数的用法

man gcc: -rdynamic Pass the flag -export-dynamic to the ELF linker, on targets that support it. This instructs the linker to add all symbols, not only used ones, to the d

小猪爱拱地 4347

华为云Stack扩容实战:从CMDB配置到计算节点增减容,一份避坑指南

本文详细解析华为云Stack扩容实战,从CMDB配置到计算节点增减容的全流程操作指南。通过典型场景案例和避坑建议,帮助企业高效管理计算资源扩容与减容,确保业务连续性。特别针对华为云Stack的弹性扩容能力提供专业指导,涵盖存储、网络及自动化工具链的配合使用。

weixin_30591551的博客 479

解决 “ cmake-tools arm-none-eabi-gcc: error: unrecognized command-line option ‘-rdynamic‘ ” 问题

使用 vscode cmake-tools 插件进行 STM 工程构建时出现 “ error: unrecognized command-line option ‘-rdynamic’ ” 错误。但通过命令行 “ cmake …” 构建时,不会出现报错。

2303_78834656的博客 1145

DC/DC开关电源学习笔记(十三)Buck-Boost升降压电路工作原理

Buck-Boost电路是一种能够实现输出电压高于或低于输入电压的DC-DC变换器,且输出电压极性与输入电压相反。它结合了Buck(降压)和Boost(升压)两种拓扑的特点,广泛应用于需要灵活电压调整的场合,如电池供电设备、LED驱动和工业控制系统。本文将从电路结构、工作原理、关键公式推导及实际应用等方面进行详细分析。

小幽余生不加糖 3505

CATIA文件的网页预览方案

CATIA是工业设计中广泛使用的专业软件,产出`.CATPart`或 `.CATProduct`等文件类型,当资产数量较大时,我们希望快捷预览这些文件,就有了`CATPart`文件网页预览的需求 但我们知道,网页上无法直接渲染`CATPart`这种复杂的文件, CATIA生成的文件(如 `CATPart` 和 `CATProduct`)不仅包含三维几何信息(例如点、线和曲面),还涵盖了丰富的元数据与专业设计特征。 那有没有办法,能实现CATIA文件在网页上的便捷预览?

weixin_44211633的博客 1449

gcc常用的参数

-c         只激活预处理,编译,和汇编,也就是他只把程序做成obj目标文件    例子用法:    gcc -c hello.c    他将生成.o的obj文件   -o           制定目标名称,缺省的时候,gcc 编译出来的文件是a.out -g          只是编译器,在编译的时候,产生调试信息。 -W  或-Wall       

why is this 590

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

链接参数export dynamic和-rdynamic的使用

存在程序main通过dlopen使用libA中的符号: main.c: 1 #include <stdio.h> 2 #include <dlfcn.h> 3 4 typedef void (*func)(void); 5 6 7 void test_main() 8 { 9 return; 10 } 11 12 13 int main() 14 { 15 void *handle = dlopen("./libA.so", RTLD_...

zz460833359的博客 980

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【Linux C/C++开发】GCC 高级编译参数组合详解:打造高可靠性C/C++程序

本文深入解析GCC四大高级编译参数的技术原理与应用场景:-rdynamic增强动态符号导出,-fno-omit-frame-pointer确保可靠的栈回溯,-fasynchronous-unwind-tables提供异常处理保障,-fsanitize-undefined-trap-on-error实现轻量级未定义行为检测。这些参数组合可显著提升C/C++程序的可调试性和运行时安全性,特别适用于服务器后端和嵌入式系统开发。文章通过示意图和代码示例展示了参数的实际效果,并分析了不同平台的兼容性和性能影响,为构建

love131452098的博客 934

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

gcc g++ 编译链接常用参数的意义;

这两天维护公司工程的时候,发现很多大的项目在链接编译的时候都会加上很长的一段参数: 比如:-m32 -std=gnu++11 -g -Wall -Wextra -fpermissive -fextended-identifiers -Wno-unused-paramter -Wno-write-strings -D_init64=long\long -finstrument-functions ...

w346665682的博客 1519

gcc命令行详解

1、gcc包含的c/c++编译器 gcc、cc、c++、g++gcc和cc是一样的,c++和g++是一样的,一般c程序就用gcc编译,c++程序就用g++编译 2、gcc的基本用法 gcc test.c这样将编译出一个名为a.out的程序gcc test.c -o test这样将编译出一个名为test的程序-o参数用来指定生成程序的名字 3、为什么会出现undefined refere...

weixin_34221775的博客 2882

backtrace 解决gcc16159 bug

采用backtrace函数避免gcc 出现的bug 16159。 backtrace的实现依赖于栈指针(fp寄存器),在gcc编译过程中任何非零的优化等级(-On参数)或加入了栈指针优化参数-fomit-frame-pointer后多将不能正确得到程序栈信息;加上-g选项以后创建符号表,关闭所有的优化机制。 在编译的时候需要加上-rdynamic选项让链接器将所有符号添加到动态符号表中,这...

学习记录 666

Linux下使用gcc和gdb调试程序

1. gcc 1&gt; 编译动态链接库 gcc -shared hello.c -o libhello.so 2&gt;编译主程序文件 gcc -g -rdynamic -o main main.c -ldl -ldl:显式加载动态库的动态函数库。 动态库的动态库函数包括:dlopen()、dlclose()、dlerror()、dlsym()。 当主程序在调用动态库时使用的是动态...

kacylining的博客 1238

gcc编译参数

1。gcc包含的c/c++编译器gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明白前面这半句是什么意思:))一般c程序就用gcc编译,c++程序就用g++编译2。gcc的基本用法gcc test.c这样将编译出一个名为a.out的程序gcc test.c -o test这样将编译出一个名为test的程序,-o参数用来指定生成程序的名字3。为什么会出现unde...

weixin_30344131的博客 112
上一篇: 堆排序及经典用法
下一篇: Linux系统内存错误产生的原因及调试方法
RunBoying
博客等级 码龄17年 41粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值