Thread: Tcl load command and mac os x

Tcl load command and mac os x

From
Jerry LeVan
Date:
At the time I built Postgresql 7.4.2 I did not have aqua Tcl/Tk
installed.

The Aqua Tcl/Tk version installs in a different location the the apple
supplied Tcl ( apple does not supply Tk). I built with support for Tcl
and it found the apple supplied version and built pgtclsh and libpgtcl.a
and a libpgtcl.so

If I start the "regular" tclsh and try to use the load command I get
load
failures

% load libpgtcl
dyld: tclsh can't open library: libpgtcl  (No such file or directory,
errno = 2)

% load /usr/local/pgsql/lib/libpgctl
dyld: tclsh can't open library: /usr/local/pgsql/lib/libpgctl  (No such
file or directory, errno = 2)

% load /usr/local/pgsql/lib/libpgtcl
dyld: tclsh can't open library: /usr/local/pgsql/lib/libpgtcl  (No such
file or directory, errno = 2)

% load /usr/local/pgsql/lib/libpgtcl.so
dyld: tclsh malformed library: /usr/local/pgsql/lib/libpgtcl.so (not a
Mach-O library file, bad filetype value)

% load /usr/local/pgsql/lib/libpgtcl.a
dyld: tclsh malformed library: /usr/local/pgsql/lib/libpgtcl.a (not a
Mach-O file, bad magic number)

Question 1) Is it possible to dynamically load the postgresql stuff
into an "ordinary" tclsh?


Question 2) Since I have Apple's Tcl and the Aqua Tcl/Tk how do I force
config to use the
             aqua version?

Thanks


Re: [MACTCL] Tcl load command and mac os x

From
"Daniel A. Steffen"
Date:
Jerry,

On Wednesday, Apr 7, 2004, at 08:25 Australia/Sydney, Jerry LeVan wrote:
> % load /usr/local/pgsql/lib/libpgtcl.so
> dyld: tclsh malformed library: /usr/local/pgsql/lib/libpgtcl.so (not a
> Mach-O library file, bad filetype value)

this should do it, however it appears that your library isn't a Mac OS
X shared library, probably you built a MachO bundle instead of a MachO
dylib. You'll have to look at the postgres buildsystem to see why it
doesn't use the information in tclConfig.sh (i.e. TCL_SHLIB_LD) to
build tcl extensions. The link line should use '-dynamiclib' and not
'-bundle', c.f. 'man ld' for details.

also, you really want to use the OSX standard .dylib shared library
extension, so that you can use
    [load libpgtcl[info sharedlibextension]]
in cross-platform tcl code.

> % load /usr/local/pgsql/lib/libpgtcl.a
> dyld: tclsh malformed library: /usr/local/pgsql/lib/libpgtcl.a (not a
> Mach-O file, bad magic number)

you cannot load static libraries

> Question 2) Since I have Apple's Tcl and the Aqua Tcl/Tk how do I
> force config to use the
>             aqua version?

if postgres has a TEA compliant configure script, use
    ./configure --with-tcl=/Library/Frameworks/Tcl.framework
--with-tclinclude=/Library/Frameworks/Tcl.framework/Headers

similar issues have come up many many times before on the tcl-mac list,
you may want to consult the list archives...

Cheers,

Daniel

--
** Daniel A. Steffen     **  "And now for something completely
** Dept. of Mathematics  **   different"    Monty Python
** Macquarie University  **  <mailto:steffen@maths.mq.edu.au>
** NSW 2109 Australia    **  <http://www.maths.mq.edu.au/~steffen/>