[GRASS-dev] debugging nviz with TclTk 8.5 aqua
michael.barton at asu.edu
Wed Jul 23 17:18:55 EDT 2008
I don't know enough about make to offer suggestions. But if you get a
procedure sorted out, I'm happy to try it.
On Jul 23, 2008, at 2:17 PM, William Kyngesburye wrote:
> On Jul 23, 2008, at 3:48 PM, Glynn Clements wrote:
>> Michael Barton wrote:
>>> Something else to keep in mind. The header I posted is needed by
>>> I think. But I also think that it is 8.5 only.
>> Do you mean that the packages for earlier versions don't include
>> tkMacOSXInt.h? Togl definitely requires that header, so if it's only
>> available with 8.5, then your only choice is 8.5.
>> Which means that you have to link against 8.5.
> OSX 10.5's system TclTk 8.4 includes this, there's a PrivateHeaders
> folder in the framework that's an alias to Headers/tk-private. OSX
> 10.4 didn't include it.
>> I'm not sure how OSX handles shared library versions.
>> On Linux, a library named e.g. libtk.so will normally be a symlink to
>> the actual library, which will include the version number. The linker
>> embeds the versioned library name in the executable, and that is used
>> for locating the library at run time. The unversioned symlink is only
>> needed at compile time (and many distributions keep the symlink in
>> -devel package, along with the headers).
>> The end result is that you can have multiple versions of a library
>> installed, and control which version is used at compile time (without
>> affecting the loading of libraries at run time) by changing the
>> unversioned symlink.
>> If OSX is similar, then you may just be able to delete the symlinks
>> for the older versions.
> Compiling does make use of symlinks to current versions. For unix
> libraries, it's the same. But for frameworks it's in the framework
> folder layout. Since frameworks are complete packages of a library,
> different versions can simply be in a different location.
> ie, to override the system tcltk framework v8.4 with your own 8.5,
> just install yours in /Library/Framworks and it will be found first,
> if -framework link flags are used.
> Yet, even system frameworks that are unix ports often have symlinks
> in /usr/lib, so you need to make sure that you have -L/path/to/your/
> lib in the linking, or link the framework directly instead of the
> library with -framework FWName.
>> Alternatively, you could try changing the linking command in
>> visualization/nviz/src/Makefile, moving XTRA_LDFLAGS (which will
>> contain the --with-tcltk-libs= directory) to the beginning of the
>> command, so that it takes precedence over other directories (where
>> 8.4 libraries are presumably being found by accident).
> Or in include/make/platform.make, replace the TCLTKLIBS line with:
> TCLTKLIBS = -framework Tcl -framework Tk
> William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>
> "Mon Dieu! but they are all alike. Cheating, murdering, lying,
> fighting, and all for things that the beasts of the jungle would not
> deign to possess - money to purchase the effeminate pleasures of
> weaklings. And yet withal bound down by silly customs that make
> them slaves to their unhappy lot while firm in the belief that they
> be the lords of creation enjoying the only real pleasures of
> - the wisdom of Tarzan
More information about the grass-dev