yocto 레시피에서 "/etc/ld.so.conf"를 편집하는 방법은 무엇입니까?

yocto 레시피에서 "/etc/ld.so.conf"를 편집하는 방법은 무엇입니까?

제안대로잭 앵글, 복사합니다이것문제는 여기에 있습니다:

일부 콘텐츠를 이미지에 복사/설치하는 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.confyocto 레시피에 줄을 추가하거나 파일을 편집하여 동적 로더에 사용자 정의 경로를 어떻게 추가할 수 있습니까?

답변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 마법은 라이브러리 캐시를 업데이트합니다.

관련 정보