chrpath의 최대 길이가 6으로 제한되는 이유는 무엇입니까?

chrpath의 최대 길이가 6으로 제한되는 이유는 무엇입니까?

공유 객체의 RUNPATH를 변경하려고 하는데 6자를 초과할 수 없다는 오류가 발생합니다. 그 이유는 무엇입니까? 이것은 chrpathRaspbian 버전 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 파일은 기존 공간을 사용하여 다시 작성되지 않으며 원래 설정된 공간으로 제한됩니다.

관련 정보