chenbobo 发表于 2006-11-06 17:50

嵌入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

大梦 发表于 2006-11-06 21:35

是在AIX上吗?
是32位,还是64位?
LD_LIBRARY_PATH正确吗?

你试试sample下面的c程序,用它的makefile
看看能不能转!

chenbobo 发表于 2006-11-07 09:48

是64位的,但是把 -q64开关加上,makefile编译后说不认识-q64啊。LD_LIBRARY_PATH该怎么设置?

大梦 发表于 2006-11-07 21:00

你先去看看别人sample程序里面是怎么搞!

Ray001 发表于 2006-11-07 22:40

LD_LIBRARY_PATH和LIB_PATH没设置对!按makefile里设置

bigapple2008 发表于 2006-11-09 15:04

按出错信息来看,很可能是没加-q64 。
在编译和link的的时候都加-q64试试

mingmingok 发表于 2012-07-17 15:49

您好:

   能否跟楼主学习下linux c链接db2数据库。 我的QQ:746554171
页: [1]
查看完整版本: 嵌入C(sqC) 的编译,连接,环境,路径,make file 的问题