제안대로잭 앵글, 복사합니다이것문제는 여기에 있습니다:
일부 콘텐츠를 이미지에 복사/설치하는 yocto 레시피가 있습니다. 그런 다음 /etc/ld.so.conf
동적 로더가 내 라이브러리 파일을 찾을 수 있도록 다음과 같은 줄을 파일에 추가하고 싶습니다 .
do_install(){
# install some stuff...
echo /opt/myStuff/lib >> /etc/ld.so.conf
ldconfig
}
빌드 프로세스 중에 빌드 프로세스를 중단하는 다음 오류가 발생합니다.
...
| DEBUG: Python function extend_recipe_sysroot finished
| DEBUG: Executing shell function do_install
| /home/debian/Devel/myYocto/build/tmp/work/myTarget/myRecipe/1.0-r0/temp/run.do_install.3176: 203: cannot create /etc/ld.so.conf: Permission denied
| WARNING: exit code 2 from a shell command.
ERROR: Task (/home/debian/Devel/myYocto/poky/meta-myLayer/myRecipe/myRecipe.bb:do_install) failed with exit code '1'
이제 내 질문은: /etc/ld.so.conf
yocto 레시피에 줄을 추가하거나 파일을 편집하여 동적 로더에 사용자 정의 경로를 어떻게 추가할 수 있습니까?
답변1
/etc/ld.so.conf
타겟 시스템에 추가하고 싶다고 생각 하지만
echo /opt/myStuff/lib >> /etc/ld.so.conf
이 파일은 빌드 호스트에서 변경됩니다. 다행히 이로 인해 오류가 발생합니다.
대상 rootfs는 $D
이므로 파일은 unter 가 되지만 $D/etc/ld.so.conf
보다 일반적으로는 파일이 에 있을 필요가 /etc
없으므로 ${D}${sysconfdir}/ld.so.conf
.
do_install()
하지만 에서는 서로 다른 영수증이 별도로 생성되어 ld.so.conf
충돌이 발생하기 때문에 이 작업을 수행할 수 없는 문제에 직면합니다 . 따라서 다음을 사용하는 것이 좋습니다 ld.so.conf.d
.
install -d ${D}${sysconfdir}/ld.so.conf.d/
echo /opt/myStuff/lib >> ${D}${sysconfdir}/ld.so.conf.d/myStuff.conf
또는 더 나은 방법은 해당 파일을 레시피에 넣고
install -m 0755 ${WORKDIR}/myStuff.conf ${D}${sysconfdir}/ld.so.conf.d/
또한 ldconfig
호스트 시스템에서 실행하지 마십시오. 어쨌든, 일부 Yocto 마법은 라이브러리 캐시를 업데이트합니다.