2017-10-25 22 views
0

私は自分の学習プロセスのためだけに、外部プロジェクトに頼らずに簡単に移植可能なRubyを構築しようとしています。Ruby 2.4.2のコンパイルに関する問題

私はを使用して、Rubyバイナリが最小限に抑えようとしているときにどのライブラリが動的にリンクしているかを判断しています。

昨日、私はRubyを3つのライブラリに対して動的にリンクしていましたが、今日はRubyを構築すると13とリンクしています。私は昨日から今日までに何が変わったのか分かりませんが、それが昨日の編集の前に存在していたライブラリのうち、昨日のルビーオン

otool -Lの結果を実行可能だった:

otool -L ruby 
ruby: 
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1349.8.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2) 
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) 
    /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 489.0.0) 

しかし、今日、それは次のようになります。

otool -L ./ruby 
./ruby: 
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1349.8.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2) 
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) 
    /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0) 
    /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0) 
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8) 
    /usr/lib/libffi.dylib (compatibility version 1.0.0, current version 1.0.0) 
    /usr/local/opt/gdbm/lib/libgdbm.4.dylib (compatibility version 5.0.0, current version 5.0.0) 
    /usr/lib/libutil.dylib (compatibility version 1.0.0, current version 1.0.0) 
    /usr/lib/libedit.3.dylib (compatibility version 2.0.0, current version 3.0.0) 
    /usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0) 
    /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 489.0.0) 

誰もが何が起こっているか知っていますか?

私はそうのようにRubyが2.4.2コンパイルしています:1ポイントで

CFLAGS="$X" CXXFLAGS="$X" LDFLAGS="$X" ./configure --prefix=/tmp/ruby-deploy --with-openssl-dir=$(brew --prefix openssl) --with-static-linked-ext --disable-install-doc --without-gmp

を - --with-static-linked-extの点に注意してください。これに

X="-arch i386 -mmacosx-version-min=10.5" 
CFLAGS="$X" CXXFLAGS="$X" LDFLAGS="$X" ./configure --prefix=/tmp/ruby-deploy --with-openssl-dir=$(brew --prefix openssl) --disable-install-doc --without-gmp 
+0

あなたは昨日でしたが、異なる結果を得たことを、今日と同じことをしたならば、何かがあなたのシステムに変更することになる。それはあなたのプロジェクトで何かあったかもしれませんあなたのシステムの他の場所にも存在する可能性があります。私は、私たちが推測以外の方法で質問に答えることはできません。 –

+0

@JohnBollinger – horseyguy

答えて

0

答えは私も実行していたことでした。これにより、他の動的にリンクされたライブラリが作成されました。

しかし、私は後で./configureを実行していたので、そのオプションを選択しないと、設定がリセットされていると思われましたが、それはしませんでした。

私はRubyのソースフォルダを拭き取り、githubから再フェッチすることで問題を発見しました。初期./configure--with-static-linked-extが解決除く問題を実行している!

関連する問題