From: Jim I. <ji...@ap...> - 2002-10-30 18:45:49
|
Robert, On Wednesday, October 30, 2002, at 10:18 AM, Robert Karen wrote: > Daniel A. Steffen wrote: >> Robert, >> The way embedding works at present is that the Tcl and Tk frameworks' >> install_name argument (check e.g. with 'otool -L') is set (via >> relinking) to the magic token >> '@executable_path/../Framework/{Tcl,Tk}.framework' and then Wish is >> relinked itself against those newly linked frameworks to burn the >> magic install_name into the executable (again check with 'otool -L'). >> There is a way to change the install_name burned into an executable >> without a relink (via the tool install_name_tool, c.f. manpage) but >> only on executables linked with -headerpad_max_install_names. You >> should be able to link Wish with this flag, use the tool and embed >> the standard frameworks. >> I'm planning to rework the buildsystem to use this method (of which I >> only became aware after I implemented the other more traditional >> method) at some point, but you're welcome to help out of course... >> Cheers, >> Daniel > > I suspect my problem with Tktable is that I didn't embed ie relink so > that the install_name argument? (otool -L) points to the magic > token. I don't have a makefile for tktable and tried setting > the Frameworks_search_path arg to > @executable_path/../Frameworks/Tk.framework/Versions/8.4/Tk > (which is what otool -L says for Tk's binary) > but that didn't affect it (same otool -L output). It is still looking > in > my /Library/Frameworks for Tk.framework. Can you tell me how to add > the magic token in PB? > You don't use the @executable_path explicitly to get Tktable to bind to Tk. You just point the linker at the version of Tk that has that cookie in it, and it will do the rest. In PB, this just means using that as the framework in the project. You actually don't even need to do this, since by the time you load Tktable, Tk will already be loaded... Anyway, you would only need to add this token to Tktable if you were planning to build a Wish.app that linked directly to Tktable, and you intended to embed it. In this case, you would put it in the library name field in the PB target panel for the shared library. However, I don't think that linking is the problem; if there were a linkage problem, you would have gotten a dyld error, not a tcl error. Sounds more like somebody is assuming that they can access tcl_platform in the package loading procs without explicitly scoping it to the global namespace (i.e. ::tcl_platform(platform)). Somebody just reported a similar thing on the TclCore list. You should take a look at the TkTable startup code, and make sure it is not doing this. Jim > Thanks, > > RK > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Tcl-mac mailing list > Tc...@li... > https://lists.sourceforge.net/lists/listinfo/tcl-mac > -- Jim Ingham ji...@ap... Developer Tools Apple Computer |