新手求教。。。。有.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的工具,还有你也可以在linux下安装开发环境自动编译的,这样你可以很方便的写代码了
至于makefile,你可以下载一个被人的列子回来改改就好了,刚开始,估计你也不会遇到很大的工程的。
------解决方案--------------------可能是so文件格式,和你运行环境问题
用 file mm.so 查看下文件格式,32位或者64位,
如果你主机是64位而so文件是32位,你又没有so文件的源代码,那么只能交叉编译成32位版本的可执行程序.
编译出来的程序可以在32位机上运行.