嵌入C(sqC) 的编译,连接,环境,路径,make file 的问题
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 是在AIX上吗?
是32位,还是64位?
LD_LIBRARY_PATH正确吗?
你试试sample下面的c程序,用它的makefile
看看能不能转! 是64位的,但是把 -q64开关加上,makefile编译后说不认识-q64啊。LD_LIBRARY_PATH该怎么设置? 你先去看看别人sample程序里面是怎么搞! LD_LIBRARY_PATH和LIB_PATH没设置对!按makefile里设置 按出错信息来看,很可能是没加-q64 。
在编译和link的的时候都加-q64试试 您好:
能否跟楼主学习下linux c链接db2数据库。 我的QQ:746554171
页:
[1]