微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法从可执行共享库中输出浮点数

我正在开发一个可以独立执行的共享库来打印它自己的版本号。

我已经定义了一个自定义入口点:

const char my_interp[] __attribute__((section(".interp"))) = "/lib64/ld-linux-x86-64.so.2"; void my_main() { printf("VERSION: %dn",0); _exit(0); }

和我一起编译

gcc -o list.os -c -g -Wall -fPIC list.c gcc -o liblist.so -g -Wl,-e,my_main -shared list.os -lc

代码编译运行完美。

在库和程序之间共享variables

如何使用dlopen加载共享库中的gdb打印符号?

如何找出共享对象的哪些函数被程序或其他库使用?

Linux下的共享库加载地址

在Eclipse CDT中为远程debugging启动部署文件的正确方法是什么?

我的问题是当我将printf的参数更改为float或double(%f或%lf)时。 运行时,库将会编译但segfault

有人有主意吗?

EDIT1:

这是段错误代码

const char my_interp[] __attribute__((section(".interp"))) = "/lib64/ld-linux-x86-64.so.2"; void my_main() { printf("VERSION: %fn",0.1f); _exit(0); }

EDIT2:

额外的环境细节:

uname -a

Linux mjolnir.site 3.1.10-1.16-desktop#1 SMP PREEMPT Wed Jun 27 05:21:40 UTC 2012(d016078)x86_64 x86_64 x86_64 GNU / Linux

gcc --version

gcc(SUSE Linux)4.6.2

/lib64/libc.so.6

configuration为x86_64-suse-linux。 由GNU CC版本4.6.2编译。 在2012年3月30日编译在Linux 3.1.0系统上。

编辑3:

在段错误输出在/ var / log / messages:

8月11日08:27:45 mjolnir内核:[10560.068741] liblist.so [11222]一般保护ip:7fc2b3cb2314 sp:7fff4f5c7de8错误:0在libc-2.14.1.so [7fc2b3c63000 + 187000]

无法链接应用程序与mudflap

了解使用gcc的共享库

在共享库中使用全局variables

用于从现有文件创build(.so文件的makefile

挂载和replace导出函数在加载的ELF(.so共享库)

弄清楚了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐