This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Compiling TCL C extensions using Cygwin gcc

Jingzhao Ou schrieb:
I tried to compile a simple Tcl C extension using Cygwin gcc. I use the
following commands:

gcc -shared -ltcl -L/lib random.o

I got the following error messege:

random.o(.text+0x31):random.c: undefined reference to `_Tcl_WrongNumArgs'
random.o(.text+0x5e):random.c: undefined reference to `_Tcl_GetIntFromObj'
random.o(.text+0x98):random.c: undefined reference to `_Tcl_GetObjResult'
random.o(.text+0xad):random.c: undefined reference to `_Tcl_SetIntObj'
random.o(.text+0xe2):random.c: undefined reference to `_Tcl_PkgRequire'
random.o(.text+0x11a):random.c: undefined reference to `_Tcl_CreateObjCommand'
random.o(.text+0x135):random.c: undefined reference to `_Tcl_PkgProvide'
collect2: ld returned 1 exit status

I can see that tcl.h is located at /usr/include. Also, libtcl84.a and
libtclstub84.a are located at /lib.

Can any one kindly help me out?

lots of beginners mistakes: there's a good gcc primer in the net. please check that out.

1. libs after the source,
2. library search path before the lib, otherwise it will not find it.
3. -shared ???

See that there's an tcl .a lib but no .dll (for completeness sake: no .la pointing to a .dll at /usr/bin), so you cannot build a shared exe.

=> gcc random.c -L/usr/lib -ltcl -o random

but -L/usr/lib is redundant because thats in the standard search path

=> gcc random.c -ltcl -o random

Note: the .exe extension is added automatically to random.

-- Reini Urban

Unsubscribe info:
Problem reports:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]