Linking error

This is a discussion on Linking error within the MySQL Database forums, part of the Database Forums category; I am trying to compile a simple ODBC and C example on Windows XP SP2. I have Cygwin_NT 5.1. ...


Go Back   Usenet Forums > Database Forums > MySQL Database

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 03-05-2008
PG
 
Posts: n/a
Default Linking error

I am trying to compile a simple ODBC and C example on Windows XP SP2.
I have Cygwin_NT 5.1.

This is the code (obtained from
http://www.easysoft.com/developer/la...dm_fns_drivers)
i am attempting to compile.

ODBCTest.c
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >

#include <stdio.h>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>

main() {
SQLHENV env;
char dsn[256];
char desc[256];
SQLSMALLINT dsn_ret;
SQLSMALLINT desc_ret;
SQLUSMALLINT direction;
SQLRETURN ret;

SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0);

direction = SQL_FETCH_FIRST;
while(SQL_SUCCEEDED(ret = SQLDataSources(env, direction,
dsn, sizeof(dsn), &dsn_ret,
desc, sizeof(desc), &desc_ret))) {
direction = SQL_FETCH_NEXT;
printf("%s - %s\n", dsn, desc);
if (ret == SQL_SUCCESS_WITH_INFO) printf("\tdata truncation\n");
}
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >


Makefile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >

CC=gcc
INCPATH=-I/usr/include -Iinclude
LIBS=-L. -lodbc32
LD=ld
all: clean ODBCTest.exe

ODBCTest.o : ODBCTest.c
$(CC) $(INCPATH) $(CFLAGS) -o ODBCTest.o -c ODBCTest.c
ODBCTest.exe : ODBCTest.o
$(CC) $(LIBS) $(CFLAGS) -o ODBCTest.exe ODBCTest.o
clean:
-rm *.o
-rm *.exe
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >


Make output and Errors:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >

$ make
rm *.o
rm *.exe
rm: cannot remove `*.exe': No such file or directory
make: [clean] Error 1 (ignored)
gcc -I/usr/include -Iinclude -o ODBCTest.o -c ODBCTest.c
gcc -L. -lodbc32 -o ODBCTest.exe ODBCTest.o
ODBCTest.o:ODBCTest.c:(.text+0x4a): undefined reference to
`_SQLAllocHandle@12'
ODBCTest.o:ODBCTest.c:(.text+0x70): undefined reference to
`_SQLSetEnvAttr@16'
ODBCTest.o:ODBCTest.c:(.text+0xca): undefined reference to
`_SQLDataSources@32'
collect2: ld returned 1 exit status
make: *** [ODBCTest.exe] Error 1
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >


Things i have checked:
libodbc32.a exists in c:\cygwin\lib\w32api.
If i remove the above lib, i get a "lib not found" kind of error when
i run make, meaning this is the lib make is using and there is no path
issue.
if i edit libodbc32.a in a binary editor, i can see the all the three
functions mentioned in the error (_SQLAllocHandle@12,
_SQLSetEnvAttr@16 and _SQLDataSources@32) exist.

How can i fix these linking errors?

Thanks

PG
Reply With Quote
  #2 (permalink)  
Old 03-05-2008
Jerry Stuckle
 
Posts: n/a
Default Re: Linking error

PG wrote:
> I am trying to compile a simple ODBC and C example on Windows XP SP2.
> I have Cygwin_NT 5.1.
>
> This is the code (obtained from
> http://www.easysoft.com/developer/la...dm_fns_drivers)
> i am attempting to compile.
>

<snip>
> Things i have checked:
> libodbc32.a exists in c:\cygwin\lib\w32api.
> If i remove the above lib, i get a "lib not found" kind of error when
> i run make, meaning this is the lib make is using and there is no path
> issue.
> if i edit libodbc32.a in a binary editor, i can see the all the three
> functions mentioned in the error (_SQLAllocHandle@12,
> _SQLSetEnvAttr@16 and _SQLDataSources@32) exist.
>
> How can i fix these linking errors?
>
> Thanks
>
> PG
>


1. Get rid of the funny graphics in your messages.
2. Try an ODBC newsgroup. libodbc32 is not a MySQL library
3. Don't even think of crossposting to every SQL-related newsgroup you
can find. Such will get you no help at all.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================

Reply With Quote
  #3 (permalink)  
Old 03-05-2008
PG
 
Posts: n/a
Default Re: Linking error

I did not know if this was a problem with makefile, cygwin, or the
specific odbc library, hence i submitted this question to multiple
groups.

Anyway, after some more work, found out that the makefile is resulting
in this command
gcc -L/lib/w32api -lodbc32 -o ODBCTest.exe ODBCTest.o <-- Fails with
link errors.

When i change the command to
gcc -o ODBCTest.exe ODBCTest.o /lib/w32api/libodbc32.a <-- Succeeds.

Not sure of the diff between the two but it will do for now.

On Mar 4, 7:24 pm, Jerry Stuckle <jstuck...@attglobal.net> wrote:
> PG wrote:
> > I am trying to compile a simple ODBC and C example on Windows XP SP2.
> > I have Cygwin_NT 5.1.

>
> > This is the code (obtained from
> >http://www.easysoft.com/developer/la...rial.html#dm_f...)
> > i am attempting to compile.

>
> <snip>
> > Things i have checked:
> > libodbc32.a exists in c:\cygwin\lib\w32api.
> > If i remove the above lib, i get a "lib not found" kind of error when
> > i run make, meaning this is the lib make is using and there is no path
> > issue.
> > if i edit libodbc32.a in a binary editor, i can see the all the three
> > functions mentioned in the error (_SQLAllocHandle@12,
> > _SQLSetEnvAttr@16 and _SQLDataSources@32) exist.

>
> > How can i fix these linking errors?

>
> > Thanks

>
> > PG

>
> 1. Get rid of the funny graphics in your messages.
> 2. Try an ODBC newsgroup. libodbc32 is not a MySQL library
> 3. Don't even think of crossposting to every SQL-related newsgroup you
> can find. Such will get you no help at all.
>
> --
> ==================
> Remove the "x" from my email address
> Jerry Stuckle
> JDS Computer Training Corp.
> jstuck...@attglobal.net
> ==================


Reply With Quote
  #4 (permalink)  
Old 03-05-2008
Huber Hans
 
Posts: n/a
Default Re: Linking error

PG schrieb:
> I did not know if this was a problem with makefile, cygwin, or the
> specific odbc library, hence i submitted this question to multiple
> groups.
>
> Anyway, after some more work, found out that the makefile is resulting
> in this command
> gcc -L/lib/w32api -lodbc32 -o ODBCTest.exe ODBCTest.o <-- Fails with
> link errors.


But that is not what you posted earlier on, see your previously posted
error output:

rm: cannot remove `*.exe': No such file or directory
make: [clean] Error 1 (ignored)
gcc -I/usr/include -Iinclude -o ODBCTest.o -c ODBCTest.c
gcc -L. -lodbc32 -o ODBCTest.exe ODBCTest.o
ODBCTest.o:ODBCTest.c:(.text+0x4a): undefined reference to
`_SQLAllocHandle@12'


no -L/lib/w32api :-)



And hey, this is has nothing to do with databases, this is a simple
gcc,make problem!

Cheers Hans
Reply With Quote
  #5 (permalink)  
Old 03-05-2008
PG
 
Posts: n/a
Default Re: Linking error


1. I realized this was a gcc problem so in order to debug the issue, i
stopped using make. i simply started using the gcc command on command
line.
2. On my machine the following two commands produced the same output
(error)
gcc -L. -lodbc32 -o ODBCTest.exe ODBCTest.o
and
gcc -L/lib/w32api -lodbc32 -o ODBCTest.exe ODBCTest.o


On Mar 5, 12:56 am, Huber Hans <hans.hu...@gmail.com> wrote:
> PG schrieb:
>
> > I did not know if this was a problem with makefile, cygwin, or the
> > specific odbc library, hence i submitted this question to multiple
> > groups.

>
> > Anyway, after some more work, found out that the makefile is resulting
> > in this command
> > gcc -L/lib/w32api -lodbc32 -o ODBCTest.exe ODBCTest.o <-- Fails with
> > link errors.

>
> But that is not what you posted earlier on, see your previously posted
> error output:
>
> rm: cannot remove `*.exe': No such file or directory
> make: [clean] Error 1 (ignored)
> gcc -I/usr/include -Iinclude -o ODBCTest.o -c ODBCTest.c
> gcc -L. -lodbc32 -o ODBCTest.exe ODBCTest.o
> ODBCTest.o:ODBCTest.c:(.text+0x4a): undefined reference to
> `_SQLAllocHandle@12'
>
> no -L/lib/w32api :-)
>
> And hey, this is has nothing to do with databases, this is a simple
> gcc,make problem!
>
> Cheers Hans


Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +1. The time now is 07:10 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0