공유 객체의 RUNPATH를 변경하려고 하는데 6자를 초과할 수 없다는 오류가 발생합니다. 그 이유는 무엇입니까? 이것은 chrpath
Raspbian 버전 0.16입니다.
$ chrpath -r ../../.. lib/vlc/plugins/access_output/libaccess_output_srt_plugin.so
lib/vlc/plugins/access_output/libaccess_output_srt_plugin.so: RUNPATH=../lib
new rpath '../../..' too large; maximum length 6
를 사용하여 더 긴 경로를 설정할 수 있었습니다 patchelf
.
답변1
chrpath
레이블이 없으면 추가할 수 없으며 RPATH
레이블을 확장할 수도 없습니다. 따라서 새 경로는 기존 경로와 같거나 짧아야 합니다. 라이브러리는 처음 RUNPATH
에 로 설정되어 ../lib
있으므로 chrpath
최대 6자의 경로로만 바꿀 수 있습니다.
patchelf
그러한 제한은 없습니다.
답변2
rpath
또는 새로운 경로 세트runpath
원래 저장된 값보다 클 수 없습니다. (Code Yarns 웹사이트).
귀하의 예에서 이전 문자는 rpath
정확히 6자입니다 ../lib
. 연장할 수 없습니다.
@R Perrin이 말했듯 chrpath
이 전체 ELF 파일은 기존 공간을 사용하여 다시 작성되지 않으며 원래 설정된 공간으로 제한됩니다.