2017-10-25 9 views
0

나는 내 자신의 학습 과정을 위해서만 외부 프로젝트에 의존하지 않고도 최소한의 이동이 가능한 루비를 만들려고합니다.루비 2.4.2 컴파일 문제

Ruby 바이너리가 최소화하려고 시도 할 때 어떤 라이브러리가 동적으로 링크되는지 확인하려면 otool -L ruby을 사용하고 있습니다.

어제 제가 루비를 만들었을 때 동적으로 3 개의 라이브러리에 링크되었지만, 오늘 루비를 만들면 13 개가 링크됩니다. 어제와 오늘 사이에 어떤 변화가 있었는지 모르지만 철저하게 혼란 스럽습니다. 어제의 편집에 앞서 링크 된 라이브러리의 존재 여부

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의 결과를 실행했다

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) 

사람이 무슨 일이 일어나고 있는지 알고 있나요? 내가 루비를 컴파일하고

은과 같이 2.4.2 : 이것에

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

대답은 내가 아니라 실행했다고했다 :

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을 확인합니다. 이로 인해 다른 동적 링크 된 lib가 생성되었습니다.

그러나 나는 그 이후에 다시 설정을 재설정했을 것이라고 가정하고 있지만 ./configure을 다시 실행했기 때문에 실행하지 못했습니다.

루비 소스 폴더를 지우고 github에서 다시 가져 오는 방법으로 문제를 발견했습니다. 처음에 ./configure을 실행하십시오 (--with-static-linked-ext 제외).