/lib/libm.so.6: wrong ELF class: ELFCLASS32

sws_martian 2009-12-19 01:28:22
为什么会报错误?如题!
————————————————————————————————————————

代码:
#include <stdlib.h>
#include <stdio.h>
#include <dlfcn.h>

int main(int argc, char **argv) {
void *handle;
double (*cosine)(double);
char *error;

handle = dlopen ("/lib/libm.so.6", RTLD_LAZY);
if (!handle) {
fputs (dlerror(), stderr);
exit(1);
}

cosine = dlsym(handle, "cos");
if ((error = dlerror()) != NULL) {
fputs(error, stderr);
exit(1);
}

printf ("%f\n", (*cosine)(2.0));
dlclose(handle);
}

编译:gcc -o foo foo.c -ldl
运行:foo

...全文
3674 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
z569362161 2009-12-19
  • 打赏
  • 举报
回复
handle = dlopen ("/lib/libm.so.6", RTLD_LAZY);
应该是这里的错误
独孤过儿 2009-12-19
  • 打赏
  • 举报
回复
readelf -h
adang_322 2009-12-19
  • 打赏
  • 举报
回复
楼上正解。
估计是64位系统上链接了32位的库。
太乙 2009-12-19
  • 打赏
  • 举报
回复

/lib/libm.so.6

改为/lib64/libm.so.6试试~~
太乙 2009-12-19
  • 打赏
  • 举报
回复
lz
ldd /lib/libm.so.6 一下看看~~~~
充电宝111 2009-12-19
  • 打赏
  • 举报
回复
32位和64位机的冲突
晨星 2009-12-19
  • 打赏
  • 举报
回复
在Ubuntu-9.04下编译运行你的程序,没发现有什么问题啊。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧