2016-10-30 18 views
3

xbox kinect를 사용하기 위해 openkinect의 웹 사이트에서 간단한 설치를하고 있습니다. 문제는 OSX 배포판이없고 homebrew가 설치를 담당 할 것이라고 가정합니다.OS X에서 RPATH를 변경하는 방법

설치 마지막 단계에서 설치에 무엇이 잘못되었는지 유용한 단서를 찾았습니다.

나는 사이트에서 들었다. "당신은 연결에 문제가있는 경우, 각 libfreenect LIB [다음 명령을 사용]의 RPATH을 변경해야"

for i in /opt/local/lib/libfreenect*.dylib; do sudo install_name_tool -id $i $i; done 
sudo install_name_tool -change libfreenect.0.2.dylib /opt/local/lib/libfreenect.0.2.dylib /opt/local/lib/libfreenect_sync.dylib 
sudo install_name_tool -change libfreenect.0.2.dylib /opt/local/lib/libfreenect.0.2.dylib /opt/local/lib/libfreenect_cv.dylib 
sudo install_name_tool -change libfreenect_sync.0.2.dylib /opt/local/lib/libfreenect_sync.0.2.dylib /opt/local/lib/libfreenect_cv.dylib 
for i in glview regview hiview glpclview tiltdemo record cppview cvdemo; do sudo install_name_tool -change libfreenect.0.2.dylib /opt/local/lib/libfreenect.0.2.dylib /opt/local/bin/$i; sudo install_name_tool -change libfreenect_sync.0.2.dylib /opt/local/lib/libfreenect_sync.0.2.dylib /opt/local/bin/$i; done 

내 RPATH은 확실히 잘못 설정되어 있습니다. 그리고 CMake로 건축 할 때이 2 차 메시지는 명확하게 나의 의혹을 확인한다.

CMake Warning (dev): 
    Policy CMP0042 is not set: MACOSX_RPATH is enabled by default. Run "cmake 
    --help-policy CMP0042" for policy details. Use the cmake_policy command to 
    set the policy and suppress this warning. 

    MACOSX_RPATH is not specified for the following targets: 

    fakenect 
    freenect 
    freenect_sync 

유일한 문제는 위의 명령이 작동하지 않는다는 것입니다. 그 이유 중 하나는 내 맥이 내 모든 파일을 /usr/local/lib/에두고, /opt/local/lib/으로 만들지 않기 때문입니다. usr에서 opt까지 파일 중 일부를 복사하여 링크 오류 수를 줄였습니다. 그러나 여전히 몇 가지로 남았습니다. 다시 말하지만, 그들은 모두이 라이브러리를 사용하여이 문제를 쉽게 해결할 수있는 opt에로드되지 않습니다.

위 코드의 첫 번째 블록을 올바르게 실행하는 방법에 대한 도움이 도움이 될 것입니다!

서브 노트 (비슷한 문제) :

답변

2

이이 경우에 정말 도움이 경우 확실하지. 그러나 나는 종종 적절한 cmake 인수 rpath - 관련 문제를 해결할 수있어 : (예를 들어 손에 프로젝트가 제대로 링커 속성을 설정하지 않는 경우) 다음

INSTALL_DIR="/where/it/goes" 
cmake .. \ 
    -DCMAKE_BUILD_TYPE=Release \ 
    -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \ 
    -DCMAKE_MACOSX_RPATH=ON \ 
    -DCMAKE_INSTALL_RPATH="$INSTALL_DIR/lib" 
모든 지금

와, 난 아직 참여해야 설치 후 install_name_tool. 예를 들어 :

여기
install_name_tool -change \ 
    @rpath/QtWidgets.framework/Versions/5/QtWidgets \ 
    /opt/dev/lib/qt/QtWidgets.framework/Versions/5/QtWidgets \ 
    "$INSTALL_DIR/lib/libvtkRenderingQt-7.1.1.dylib" 

, libvtkRenderingQt-7.1.1.dylib 위에서 같은 CMake 플래그와 내장 CMake 프로젝트에서 생성 된 라이브러리입니다. 어떤 이유로, libvtkRenderingQt은 위의 명령으로 수정 된 Qt 프레임 워크에서 리소스를 찾을 수 없습니다. 유사 구문 :

install_name_tool -change <old-path> <new-path> <file> 

<old-path> ...이 하나 otool -L <file>에 도시된다. 당신은 또한 비슷한 방식으로 install_name_tool으로 rpath을 바꿀 수 있습니다 (자신에게 아직 이것을 시도하지 않은) :

install_name_tool -rpath <old-path> <new-path> <file> 

그리고 어쩌면 마지막 주 : 나는 로컬 자신을 구축 도구를 설치하는 것을 선호 디렉토리 (예 : /opt/dev 또는 일부 사용자 디렉토리)가 다른 채널 (예 : macport, brew 등)에서 가져온 다른 설치를 엉망으로 만들지 않도록합니다.이것은 또한 여러분의 예 에서처럼 sudo 작업을 요구하지 못하게합니다.