From: "nobu (Nobuyoshi Nakada)" Date: 2013-02-25T09:25:44+09:00 Subject: [ruby-core:52856] [Backport 200 - Backport #7948][Feedback] Can not compile pseudo static Ruby binary on OSX Issue #7948 has been updated by nobu (Nobuyoshi Nakada). Status changed from Open to Feedback If you want all extension libraries, including encodings and transcoders, to be statically linked to ruby, then you can use --with-static-linked-ext configure option. > What is the preferred way to compile static ruby (with minimal > external dependencies) on systems like OSX which do not provide > default package manager so no default library paths can be assumed. Do you mean external libraries linked to ruby, by "external dependencies"? I couldn't get "no default library paths can be assumed", could you ellaborate? ---------------------------------------- Backport #7948: Can not compile pseudo static Ruby binary on OSX https://bugs.ruby-lang.org/issues/7948#change-36968 Author: mpapis (Michal Papis) Status: Feedback Priority: Normal Assignee: Category: Target version: In ruby 1.9.x I was using `LDFLAGS="-Bstatic $LDFLAGS"` to force pseudo static compilation on OSX (full static is not possible). This stopped to work with 2.0.0-p0, the binary is compiled but the static flag is not handled properly and the generated binary can not run: $ ~/.sm/pkg/versions/tokaidoapp/2.0.0-p0/bin/ruby --version dyld: Symbol not found: _Init_encinit Referenced from: /Users/mpapis/.sm/pkg/versions/tokaidoapp/2.0.0-p0/bin/ruby Expected in: flat namespace in /Users/mpapis/.sm/pkg/versions/tokaidoapp/2.0.0-p0/bin/ruby Trace/BPT trap using `otool -L ~/.sm/pkg/versions/tokaidoapp/2.0.0-p0/bin/ruby` I can see the binary depends on a lot more external libraries: /Users/mpapis/.sm/pkg/versions/tokaidoapp/2.0.0-p0/bin/ruby: /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11) /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0) /Users/mpapis/.sm/pkg/versions/openssl/0.9.8y/lib/libssl.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8) /Users/mpapis/.sm/pkg/versions/openssl/0.9.8y/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8) /usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0) /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk (compatibility version 8.5.0, current version 8.5.7) /System/Library/Frameworks/Tcl.framework/Versions/8.5/Tcl (compatibility version 8.5.0, current version 8.5.7) /usr/lib/libffi.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libutil.dylib (compatibility version 1.0.0, current version 1.0.0) compared to `otool -L ~/.sm/pkg/versions/tokaidoapp/1.9.3-p392/bin/ruby` /Users/mpapis/.sm/pkg/versions/tokaidoapp/1.9.3-p392/bin/ruby: /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11) /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0) What is the preferred way to compile static ruby (with minimal external dependencies) on systems like OSX which do not provide default package manager so no default library paths can be assumed. -- http://bugs.ruby-lang.org/