c – 在发布时使用dladdr
发布时间:2020-12-14 17:59:24 所属栏目:百科 来源:网络整理
导读:我为我的应用程序编写了一个分析工具,我使用dladdr将函数指针转换为name.只要Im在调试中,一切正常,但只要我在发布中编译(使用XCode 5.1),所有名称转换都会失败并返回NULL ex: #include dlfcn.hint main( int argc,char **argv ){ Dl_info info; if( dladdr(
我为我的应用程序编写了一个分析工具,我使用dladdr将函数指针转换为name.只要Im在调试中,一切正常,但只要我在发布中编译(使用XCode 5.1),所有名称转换都会失败并返回NULL ex:
#include <dlfcn.h> int main( int argc,char **argv ) { Dl_info info; if( dladdr( main,&info ) != 0 ) { fprintf( stderr,"%sn",info.dli_sname ); } 我尝试了多个编译器标志,我将其传递给C/C++标志:-export-dynamic -fPIC以及-Wl,– export-dynamic没有任何作用……有没有办法继续编译优化并保留函数地址 – > dladdr的名称翻译功能? 解决方法
clang和gcc支持-rdynamic选项作为链接器选项.这应该使dladdr能够在发布模式下按预期运行. -rdynamic定义为:
有关gcc链接器选项的更多信息,请参见here (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |