Tcl load command and mac os x
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
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/>
I dove into config guts and figured out the way to build via specifing
the location
of the config scripts for tcl and tk...
pgtksh behaves badly, clicking on the "pgtksh" window generates an
error:
set front process failed,-606
I can't get the menu for the wish window ;(
I guess I will have to ponder the dynamic loading of libs...
If anyone *has* got the loading to work, I would appreciate some
pointers...
--Jerry
On Apr 6, 2004, at 9:04 PM, Daniel A. Steffen wrote:
Show quoted text
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/Headerssimilar 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/>
On Wednesday, Apr 7, 2004, at 13:52 Australia/Sydney, Jerry LeVan wrote:
pgtksh behaves badly, clicking on the "pgtksh" window generates an
error:set front process failed,-606
I can't get the menu for the wish window ;(
once again, this has come up many times before on tcl-mac, see the list
archives
probably easiest to just use wish and [package require postgrestcl] or
whatever the package names is.
I guess I will have to ponder the dynamic loading of libs...
If anyone *has* got the loading to work, I would appreciate some
pointers...
as mentioned, I think you just need to link the library differently
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/>