免费注册 查看新帖 |

Chinaunix

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

DB2下嵌入C(sqC) 的编译,连接,环境,路径,make file 的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-06 18:38 |只看该作者 |倒序浏览
--------------------------------------------------------------------------------

db2  下,makefile后产生可执行文件test,但是一执行就报如下错误:


./test
exec(): 0509-036 Cannot load program ./test because of the following errors:
        0509-022 Cannot load module /dwcdr/dwcdr/sqllib/lib32/libdb2.a(shr.o).
        0509-150   Dependent module /dwcdr/dwcdr/sqllib/lib/libdb2osse.a(shr.o) could not be loaded.
        0509-152   Member shr.o is not found in archive

    有大侠说是操作系统版本的问题,怎么回事?大家帮下忙啊。

我的的makefile为:
.SUFFIXES: .sqc .c .o

GCC=gcc
CC=gcc



DB2PATH=/××××/××××/sqllib
CCFLAGS=-g

CFLAGS=  -I$(DB2PATH)/include

LIBS= -L $(DB2PATH)/lib   -ldb2
UID=XXXX
PWD=XXX
DB=XXX

BILLHOME=.
BILLBIN=.
BILLSRC=$(BILLHOME)
BILLOBJ=$(BILLHOME)
BILLLIB=../lib

INCLUDE=-I. -I$(BILLHOME)/src -I$(BILLLIB) \
       -I$(DB2PATH)/include \
       -I/usr/lib -I/usr/local/include \
       -I/usr/include


TARGET1 = $(BILLBIN)/test
all(TARGET1)

.sqc.o:
        db2 connect to $(DB) user $(UID) using $(PWD);\
        db2 prep $*.sqc bindfile;\
        db2 bind $*.bnd;\
        db2 connect reset;\
        $(CC) $(INCLUDE) -o  $*.o -c  $(CCFLAGS) $(CFLAGS) $(DEFS)  $*.c ;

.c.o:
        $(CC) $ (INCLUDE) -o  $*.o -c  $(CCFLAGS) $(CFLAGS) $(LIBS) $(DEFS) $*.c --def \standard.def


PICK_OBJS1= $(BILLSRC)/test.o

$(BILLBIN)/test:    $(PICK_OBJS1)
        $(CC) $(CFLAGS) -o $(TARGET1)  $(PICK_OBJS1)  $(ORACLE_LIB)$(LINKFLAG) $(LIBS)

clean:
        rm -f *.o $(TARGET1) test.c test.o test.bnd

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-11-06 23:56 |只看该作者
/dwcdr/dwcdr/sqllib/lib/libdb2osse.a
这个库存在吗?
是64位的还是32位的?
如果是64位的换成32位的。

论坛徽章:
0
3 [报告]
发表于 2006-11-07 08:35 |只看该作者
是不是缺少环境变量 LD_LIBRARY_PATH

论坛徽章:
0
4 [报告]
发表于 2006-11-07 09:50 |只看该作者
我也把LD_LIBRARY_PATH设置成DB2的lib指向,但是还是不行啊。64位的,但是我加上"-q64”开关后,makefile编译后提示“不认识的参数”。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2006-11-07 09:55 |只看该作者
原帖由 chenbobo 于 2006-11-7 09:50 发表
我也把LD_LIBRARY_PATH设置成DB2的lib指向,但是还是不行啊。64位的,但是我加上"-q64”开关后,makefile编译后提示“不认识的参数”。

-maix64

论坛徽章:
0
6 [报告]
发表于 2006-11-07 10:19 |只看该作者
非常感谢各位大侠。
我按lenovo的做法
db2 bind $*.bnd;\
        db2 connect reset;\
        db2 terminate;\
        $(CC) $(INCLUDE) -o $*.o -c $(CCFLAGS) $(CFLAGS) $(DEFS)  $*.c ;

.c.o:
        $(CC) $ (INCLUDE)   -o $*.o -c $(CCFLAGS) $(CFLAGS) $(LIBS) $(DEFS) $*.c --def \standard.def
改写makefile后,编译可以通过,但是运行后,错误和原来一一样啊。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2006-11-07 10:22 |只看该作者
你要保证你编译的程序,
所用的库都是64位或者都是32位。
仔细检查吧。

论坛徽章:
0
8 [报告]
发表于 2006-11-07 10:28 |只看该作者
怎么保证啊lenovo 荣誉版主-大法师,我在makefile里面不是已经把LIB指向为/XXX/XXX/sqllib/lib了吗?我的系统是64位的。

论坛徽章:
0
9 [报告]
发表于 2006-11-07 10:30 |只看该作者
gcc -I/dwcdr/dwcdr/sqllib/include -maix64   -o   ./test    ./test.o   -L /dwcdr/dwcdr/sqllib/lib64  -ldb2 -I. -I./src -I../lib  -I/dwcdr/dwcdr/sqllib/include  -I/usr/lib -I/usr/local/include  -I/usr/include   
ld: 0711-738 ERROR: Input file ./test.o:
        XCOFF32 object files are not allowed in 64-bit mode.
collect2: ld returned 8 exit status
make: 1254-004 The error code from the last command is 1.
这是错误

论坛徽章:
0
10 [报告]
发表于 2006-11-07 10:35 |只看该作者
OK,成功了。多谢大侠。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP