From: Bill G. <bg...@co...> - 2010-01-18 19:36:47
|
I've been trying to build a working ODBC driver on 64-bit linux and, so far, have not been successful. I've basically been following these instructions that were recently posted to the list: >You could (and probably should) build the driver from source. > >o Check out the code from cvs. >(Be sure to use the B2_0_0 tag) > >o cd to /path/to/checkedoutcode/Builds/Gcc.lin > >o type at command prompt: >make -f makefile.linux all install I'm using the B2_0_0 tag. I'm building with gcc 4.1.2. I made a few changes to makefile.linux (which may have *caused* some of my problems!): I added: ARCH=x86_64 After some debugging, it also appeared that I needed these compiler flags: -DBUILD_REAL_64_BIT_MODE -DSIZEOF_LONG=8 so I added them. With the driver built using this approach, simple queries work but DB operations involving bound parameters are failing. Specifically, this call in IscStatement::execute() if (connection->GDS->_dsql_execute2 (statusVector, &transHandle, &statementHandle, dialect, inputSqlda, NULL)) is failing with a peculiar server error that leads me to think I have some kind of alignment problem in inputSqlda. Before continuing my debugging, I just thought I'd see if anyone could give me some specific advice. Can anyone who has successfully built a 64-bit linux driver tell me if my addition of -DBUILD_REAL_64_BIT_MODE -DSIZEOF_LONG=8 is the right thing to do (I do know that the sizeof(long) with g++ 4.1.2 -m64 is 8, of course)? Thanks. Bill |