阿旺 发表于 2004-09-24 11:00

linux环境下DB2嵌入C++编程的makefile问题(急,在线等)

大家好,我对单个.sqC文件的makefile如下:

DB2    = db2
CC   = g++
CFLAGS = -O
                                                                              
IP1   = /home/db2inst1/sqllib/include
LP1   = /home/db2inst1/sqllib/lib
LIB1= db2
                                                                              
DATABASE = roadnet2
                                                                              
EXE = split
                                                                              
SQC = split.sqC
C   = split.C
BND = split.bnd
OBJ = split.o
                                                                              
all : $(EXE)
                                                                              
$(EXE) : $(OBJ)
      $(CC) $(CFLAGS) -L$(LP1) $(OBJ) -o $@ -l$(LIB1); \
                                                                              
$(OBJ) : $(C)
      $(CC) -g -c $(CFLAGS) -I$(IP1) $(C)
                                                                              
$(C) $(BND) : $(SQC)
      $(DB2) connect to $(DATABASE) user db2inst1 using 111111; \
      $(DB2) prep $(SQC) target cplusplus bindfile using $(BND); \
      $(DB2) bind $(BND); \
      $(DB2) connect reset
clean :
      rm $(C) $(BND) $(OBJ) $(EXE)

对单个文件进行编译是对的,可是怎么修改了让它能够编译多个.sqC文件呢?我试过把.sqC和相应的.C文件添加在$(C)和$(BND)中,可是不行啊,大侠们能告诉我怎么修改妈?

ccxpts 发表于 2009-05-26 14:57

makefile文件:
CC= gcc

DBNAME                = shjddb
INCDIR                = $(HOME)/sqllib/include
BINDIR                = $(HOME)/sqllib/bin
BNDDIR                = $(HOME)/sqllib/bnd
LIBDIR                = $(HOME)/sqllib/lib

CFLAGS        =        -I$(INCDIR) -s
LFLAGS        =        -L$(LIBDIR) -ldb2

test =        test.o
all: test clear

test :        $(test)
        $(CC) -O $(LFLAGS) $(test) -o $@
       
.SUFFIXES:.SQC
.SQC.o:
        cp $*.SQC $*.sqc
        db2 connect to $(DBNAME);
        db2 prep $*.sqc BINDFILE USING $(BNDDIR)/$*.bnd;
        db2 bind $(BNDDIR)/$*.bnd datetime ISO;
        db2 grant execute on package $* to public;
        $(CC) -g -c -O $(CFLAGS) $*.c
        -rm -f $*.c $*.sqc
clear:
        -rm *.o

test.SQC文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sqlenv.h>
#include <sqlcodes.h>
#include <sqlda.h>
EXEC SQL INCLUDE sqlca;

int main()
{
        EXEC SQL BEGIN DECLARE SECTION;
                char acDbName;
                char acDbUser;
                char acDbPass;
                char acBrno;
        EXEC SQL ENDDECLARE SECTION;
char str, *zz, str1;
int i;   

        strcpy( acDbName, "shjddb" );
        strcpy( acDbUser, "shjd" );
        strcpy( acDbPass, "shjd" );   
        EXEC SQL CONNECT TO :acDbName user :acDbUser using :acDbPass;
        if (sqlca.sqlcode)
        {
                printf("连接数据库出错!\n");
                goto EXIT;
        }
       
memset( acBrno, 0x00, sizeof(acBrno));   
        EXEC SQL SELECT SITENO INTO :acBrno
                FROM TEMP_BATCH       
                WHERE BATCHID = '20090514150559031001';
if( SQLCODE != 0 )
        {
                printf("运行SQL出错!\n");
                goto EXIT;
        }
       
printf("Brno=%s\n", acBrno);
EXIT:
        EXEC SQL DISCONNECT :acDbName ;
        printf("程序运行结束!\n");
        exit(0);
}

paulxu2002 发表于 2009-06-11 17:27

看看
页: [1]
查看完整版本: linux环境下DB2嵌入C++编程的makefile问题(急,在线等)