日期:2014-05-16  浏览次数:20651 次

新手求教。。。。有.c .so .h文件的程序要怎么编译???.h .so均不是标准的。。。
.c文件内容如下


#include "stdio.h"
#include "dlfcn.h"
#include "./密码计算.h"//导出函数声明
#include "stdlib.h"
#define  SOFILE "./mm.so"//密码算法动态库位置

void main()
{
void *dp;
char *error;
char name[128]="18952230000";
char password[128]="123456";
char key[128]={0};
dp=dlopen(SOFILE,RTLD_LAZY);
if(dp==NULL)
{
fputs(dlerror(),stderr);
exit(1);
}
getKey=dlsym(dp,"getKey");
error=dlerror();
if(error)
{
fputs(error,stderr);
exit(1);
}

getKey(name,password,key);
printf("%s",key);


}

------解决方案--------------------
给你个建议,好好学习C语言,再来学linux相关的。

居然还有中文的头文件,
getKey没声明就使用。

------解决方案--------------------
比如有:a.h b.c c.so
gcc a.h  b.c -lc  -o target
------解决方案--------------------
好好学习怎么写简单的makefile吧
------解决方案--------------------
引用:
好好学习怎么写简单的makefile吧

其实也不用写makefile吧,
刚开始的时候你可以,用一些自动生成的makefile的工具,还有你也可以在linux下安装开发环境自动编译的,这样你可以很方便的写代码了
至于makefile,你可以下载一个被人的列子回来改改就好了,刚开始,估计你也不会遇到很大的工程的。
------解决方案--------------------
可能是so文件格式,和你运行环境问题
用 file mm.so 查看下文件格式,32位或者64位,
如果你主机是64位而so文件是32位,你又没有so文件的源代码,那么只能交叉编译成32位版本的可执行程序.
编译出来的程序可以在32位机上运行.
引用:
引用:比如有:a.h b.c c.so
gcc a.h  b.c -lc  -o target
mm.so: wrong ELF class: ELFCLASS32出现这个怎么破。。。。额。。