- 论坛徽章:
- 0
|
本帖最后由 wzabcd1234 于 2014-11-17 17:00 编辑
您好:
写了一个测试程序如下:
a_func.c
int a_func(int arg)
{
int ret = 0;
printf("a_func [%d]\n", arg);
}
so_func.c
int so_func(int arg)
{
int ret = 0;
ret = a_func(arg);
printf("so_func [%d]\n", ret);
return 0;
}
main.c
typedef int (*mytype)(int);
int main()
{
void *h = NULL;
mytype sofunc;
h = dlopen("./libsofunc.so", RTLD_LAZY);
if (h == NULL)
{
printf("dlopen error\n");
exit(1);
}
sofunc = dlsym(h, "so_func");
if (sofunc == NULL)
{
printf("dlsym error\n");
exit(1);
}
sofunc(100);
}
Makefile如下:
all:
cc -g -c a_func.c
ar -rv libafunc.a a_func.o
cc -g -G -qmkshrobj -o libsofunc.so so_func.c
cc -g -c main.c
cc -o main main.o -L. -lafunc -ldl
想要做的事就是main调用so中的so_func,然后so_func调用a_func,但是运行main之后直接coredump了,core在so_func中调用a_func的哪一行,请教各路大神,这是什么原因?谢谢。
PS:我的测试环境是AIX |
|