[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