linux - 바이너리 - 매트랩 유효 하지 않은 파일 id 입니다 fopen 을 사용 하여 유효한 파일 id 를 생성 하십시오




CMake로 바이너리 생성하기는 런타임 경로를 제거한다. (2)

나는 리눅스에서 프로그램을 만들기 위해 CMake를 사용하고있다. 프로그램이 성공적으로 컴파일되고 프로젝트 빌드 디렉토리에서 실행됩니다. 이 프로그램은 ${HOME}/build/lib 디렉토리에있는 커스텀 라이브러리와 링크되어있다.

설치 단계가 있습니다.

install(TARGETS ProgName RUNTIME DESTINATION bin)

make install 실행하면 프로그램이 올바른 위치에 cmakecmake 설치 프로그램은 이진 파일에서 런타임 경로를 제거합니다.

-- Install configuration: "Debug"
-- Installing: *binary name*
-- Removed runtime path from "*binary name*"

가능하다면 광산을 시스템 라이브러리 위치로 제한하고 싶습니다. 그래서 LD_LIBRARY_PATH 변수의 오용에 대해 인터넷에서 기사를 읽었습니다. 나는 기본 링커 검색 경로에 위치를 추가 할 수 없기 때문에 나는 sysadmin이 아니다.

누구든지 설치시 또는 적어도 런타임에 추가되는 경로를 사용자 정의 할 때 개발 시간 연결 경로를 유지할 수있는 방법을 알고 있습니까?

건배



이것은 CMake 2.8에서 작동합니다.

 set_target_properties(foo PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE)

여기서 foo 는 앞서 정의한 대상입니다.

 project(foo)
 add_executable(foo ...)
  ...
 install(TARGETS foo DESTINATION bin)
  ...

전에

% sudo make install
Install the project...
-- Install configuration: ""
-- Installing: /opt/mystuff/bin/foo
-- Removed runtime path from "/opt/mystuff/bin/foo"

% sudo make install
Install the project...
-- Install configuration: ""
-- Installing: /opt/mystuff/bin/foo
-- Set runtime path of "/opt/mystuff/bin/foo" to "/opt/zzyzx/lib:/opt/bar/lib/x86_64"




cmake