免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3151 | 回复: 0
打印 上一主题 下一主题

动态库问题 在aix上编译过去就时执行不了 请大家帮忙 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-17 13:29 |只看该作者 |倒序浏览
环境: AIX 5L \r\n主函数 ren.c \r\n使用 test.c temp.c 这两个api生成动态库 libtest.so 供主函数调用 \r\n编译通过但执行可执行文件时报如下错: \r\nexec(): 0509-036 Cannot load program ren because of the following errors: \r\n       0509-151 The program does not have an entry point or \r\n                  the o_snentry field in the auxiliary header is invalid. \r\n       0509-194 Examine file headers with the \'dump -ohv\' command. \r\n\r\n小弟不知所措  但在命令行中使用 cc 编译 却至少能够执行主函数中开始的printf语句 \r\n忘各位老师高手 多多帮忙!!!  小弟不胜感激 \r\n\r\n原码如下: \r\nren.c \r\n\r\n#include <stdio.h>; \r\n#include <dlfcn.h>; \r\n#define  MAXLEN 8192 \r\n\r\nint \r\nmain() \r\n{ \r\n  int   ilRc; \r\n  char  name[MAXLEN]; \r\n  char  para[MAXLEN]; \r\n  FILE  *fp; \r\n  int   (*func)(); \r\n  void  *Handle; \r\n\r\n  printf(\"input funcname!!\\n\"; \r\n  scanf(\"%s\",name); \r\n  printf(\"funcname is [%s]\\n\",name); \r\n\r\n  printf(\"input funcpara!!\\n\"; \r\n  scanf(\"%s\",para); \r\n  printf(\"funcpara is [%s]\\n\",para); \r\n\r\n  if((fp = fopen(\"/home/switch/ramon/debug/main.debug\",\"w\") == NULL) \r\n  { \r\n      printf(\"create debug file failed!!\\n\"; \r\n      exit(-1); \r\n  } \r\n\r\n  Handle = dlopen(\"/home/switch/ramon/lib/libtest.so\",RTLD_LAZY); \r\n  if(Handle == NULL)   \r\n  { \r\n      fprintf(fp,\"dlopen libtest.so failed!!\\n\"; \r\n      exit(-1); \r\n  } \r\n\r\n  func = (int(*)())dlsym(Handle,name); \r\n  if(func == NULL){ \r\n       fprintf(fp,\"dlsym [%s] failed!!\\n\",name); \r\n       exit(-1); \r\n  } \r\n\r\n  ilRc = func(para); \r\n  if(ilRc != 0){ \r\n       fprintf(fp,\"func [%s] failed!!\\n\",para); \r\n       exit(-1); \r\n   } \r\n  dlclose(Handle); \r\n\r\n  fprintf(fp,\"opretion success!!\\n\"; \r\n  fclose(fp); \r\n} \r\n\r\ntemp.c: \r\n\r\n#include <stdio.h>; \r\nint \r\ntemp(char *temp) \r\n{ \r\n  printf(\"this is function temp!!\\n\"; \r\n  printf(\"the string is [%s]!!\\n\",temp); \r\n\r\n} \r\n\r\ntest.c : \r\n\r\n#include <stdio.h>; \r\n\r\nint \r\ntest(char *test) \r\n{ \r\n  printf(\"this is function test!!\\n\"; \r\n  printf(\"the string is [%s]!!\\n\",test); \r\n} \r\n\r\nmakefile: \r\n\r\nINCLUDE= -I$(HOME)/ramon/include \r\nLIBSO= -L$(HOME)/ramon/lib -ltest \r\nBIN= $(HOME)/ramon/bin \r\nLIB= $(HOME)/ramon/lib \r\n\r\nCC=cc \r\n\r\nCCFLAG= -g -c \r\n\r\n.SUFFIXES:  .c .o \r\n\r\nall: libtest ren clean \r\n\r\n.c.o: \r\n$(CC) $(CCFLAG) -o $*.o  $*.c \r\n\r\nren:ren.o \r\n@echo Building \"ren...\" \r\n$(CC) -G -o $(BIN)/ren ren.o $(LIBSO) -lc -lm \r\n\r\nlibtest:test.o temp.o \r\n@echo ----Making dllLibraries------- \r\n$(CC) -G -o libtest.so test.o temp.o -bE:libtest.exp -bM:SRE -bnoentry -lc \r\nmv libtest.so $(LIB)/libtest.so \r\n\r\nclean: \r\nrm -f *.o \r\n\r\n\r\nlibtest.exp: \r\n* \r\n******************************************* \r\n*    local service functions \r\n******************************************* \r\n* \r\n#!libtest.o \r\ntest \r\ntemp \r\n* \r\n******************************************* \r\n*     end define \r\n******************************************* \r\n* \r\n\r\n多谢多谢了   高人解决   小弟跪地叩首!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP