On Oct 31, 2:55 ¨Âí¬ Êåòåíù Èéîåçáòäîå¼êåò®®®Àèéîåçáòäîåò®ïòç¾ ÷òïôåº > On Sat, Oct 31, 2009 at 10:00:05PM +0900, Sean O'Donnell wrote: > > Hello, > > > I am trying to put together a compiled, standalone version of ruby > > that I can drop into a user directory from a portable drive. Think: > > classroom setting with twenty, un-networked OSX 10.4/PPC machines. I > > want to compile once on one of these machines, then tarball it up and > > copy it out to the user's home directory on each of the other > > computers. I then update the user's PATH (e.g., /Users/student/local/ > > ruby) to find this version of ruby. > > > Here's how I build it now, which isn't quite working: > > > ruby-1.87-src> ./configure --prefix=/Users/teacher/local > > ruby-1.87-src> make && make install > > > It's built in my local directory, which I tarball and then copy out > > to /Users/student/local on the other PPCs. But, when I try to run it > > from the other computer, I get this error: > > > ==start > > > dyld: lazy symbol binding failed: Symbol not found: _ruby_init_stack > > ¨Âåæåòåîãåæòïí¯Áððìéãáôéïîó¯ÍËÓÁбµ¯ÒïÒ¯Òõâù¯âéî¯òõâ> > ¨Âøðåãôåéî¯õóò¯ìéâ¯ìéâòõâù®äùìéâ > > > dyld: Symbol not found: _ruby_init_stack > > ¨Âåæåòåîãåæòïí¯Áððìéãáôéïîó¯ÍËÓÁбµ¯ÒïÒ¯Òõâù¯âéî¯òõâ> > ¨Âøðåãôåéî¯õóò¯ìéâ¯ìéâòõâù®äùìéâ > > > Trace/BPT trap > > > =end > > These are errors from the linker on the other PPC. When you built ruby > it put the path to the shared library in the executable, and the file > /usr/lib/libruby.dylib does not exist on the student's machine. > > > Thoughts? I guess the high-level question is this: Are there > > additional flags that I need to pass to `configure` to build a self- > > contained, architecture-specific version? > > Built a fully staticly linked ruby instead. ¨Âùïðìáî ïî õóéîúìéâ ïò > openssl in your teaching you'll need to build them and put them in the > tarball too. > > Edit the ext/Setup file in the ruby distribution tarball to turn on the > 'nodynamic' option and uncomment each extension you would like compiled > statically. > > Then run : > > ./configure --disable-shared --prefix=/Users/student/local/ruby > make && make install > > Then I believe you'll be a step closer. ¨Âïéîç ôèéó ÷éìì äéóáâìôè> dynamic loading of extensions, so I'm assuming that you will not later > deploy gems with extensions on top of this. > > enjoy, > > -jeremy > > -- > ======================================================================== > ¨ÂåòåíÈéîåçáòäîå ¨Â ¨Âåò®®®Àèéîåçáòäîåò®ïò Thanks - I may go this way. However, if I were to continue with a non- static version, how would I force the path to point to the desired shared library? Like this? ./configure --prefix=/Users/student/local --libdir=/Users/student/ local In the version I've built, I can see libruby.dylib in the /Users/ student/local/lib directory. It was my intention to keep these shared libraries contained within the build. I guess the executable just wasn't pointing to it. I'm glad you mentioned that I cannot deploy w/extensions on top of the statically built ruby. I need to use sqlite3-ruby, which may fall into this category. Sounds like I've got some experimenting to do. Thanks, Sean