[GRASS-dev] debugging nviz with TclTk 8.5 aqua
Michael Barton
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.
Michael
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
>>> Togl
>>> 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
>> the
>> -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
>> the
>> 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>
> http://www.kyngchaos.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
> existence....
>
> - the wisdom of Tarzan
>
>
More information about the grass-dev
mailing list