请教:dlopen总是打不开动态库文件??
//----------------------------------------------------------------
//main.c
#include<stdio.h>
#include<stdlib.h>
#include<dlfcn.h>
#include"types.h"
struct resource rcs;
int main()
{
int i;
void *handle;
void (*myfcn)(void *);
const char* errmsg;
char* dir = "./policy.so";
handle=dlopen(dir, RTLD_NOW);
if(handle == NULL) {
fprintf(stderr, "Failed to load '%s'\n", dir);
exit(EXIT_FAILURE);
}
dlerror();
myfcn = dlsym(handle, "init_policy");
if((errmsg = dlerror()) != NULL) {
fprintf(stderr, "Didn't find policy_entry");
exit(EXIT_FAILURE);
}
rcs.aaa = malloc(6);
rcs.bbb = malloc(6);
for(i = 0; i < 5; i++) {
rcs.aaa[i] = '0'+i;
rcs.bbb[i] = rcs.aaa[i];
}
rcs.aaa[i] = '\0';
rcs.bbb[i] = '\0';
myfcn(NULL);
dlclose(handle);
return 1;
}
//-------------------------------------------------------------------------------
//mklib.sh
#! /bin/bash
gcc -fPIC -g -c policy.c -o libpolicy.o
gcc -g -shared -Wl,-soname,libpolicy.so -o libpolicy.so.1.0.0 libpolicy.o -lc
ln -s libpolicy.so.1.0.0 libpolicy.so.l
ln -s libpolicy.so.1.0.0 libpolicy.so
gcc -g -Wall main.c -o main -ldl
//--------------------------------------------------------------------------------
//policy.c
#include"policy.h"
char ccc[10] = "iloveyou\n";
void init_policy()
{
int i = 1;
printf("%s\n", rcs.aaa);
printf("%s\n", rcs.bbb);
release_policy();
for(i = 0; i < 5; i++) {
ccc[i] = 'a';
}
release_policy();
while(1);
}
void release_policy()
{
printf(ccc);
}
//-----------------------------------------------------------------------
我怎么也打不开那个.so文件,不知道为什么……求救~~