Yocto 二进制需要/lib64,但只需要/lib

Yocto 二进制需要/lib64,但只需要/lib,yocto,openembedded,Yocto,Openembedded,我必须从Intel、AMD和NVIDIA复制一些二进制执行文件(工具) 大多数都使用了/lib64,但我的yocto环境只有/lib 我这样做在大多数情况下都有效: do_install () { patchelf --set-interpreter /lib/ld-linux-x86-64.so.2 ${S}/foo .... } 但我仍然看到一些二进制文件不能以这种方式工作,我仍然需要手动创建/lib64,例如: ln -s /lib /lib64 然后二进制文件将运行,否则,它将

我必须从Intel、AMD和NVIDIA复制一些二进制执行文件(工具)

大多数都使用了
/lib64
,但我的yocto环境只有
/lib

我这样做在大多数情况下都有效:

do_install () {
   patchelf --set-interpreter /lib/ld-linux-x86-64.so.2 ${S}/foo
....
}
但我仍然看到一些二进制文件不能以这种方式工作,我仍然需要手动创建/lib64,例如:

ln -s /lib /lib64
然后二进制文件将运行,否则,它将直接终止


如何解决此类问题?

它可能使用以下命令工作:

 IMAGE_PREPROCESS_COMMAND_append = " symlink_lib64;

symlink_lib64() {
    ln -s /lib ${IMAGE_ROOTFS}/lib64
}
如果您有自己的image.bbclass,您可以在那里更改它,也可以在使用过的.bbclass文件中手动更改它。比如说,我喜欢这样做

您还可以将其添加到local.conf


类似的问题也存在

另一个解决方案是,如果您设置:

BASELIB = "lib64"

在您的构建中,它将使用/lib64而不是/lib

,因为部分二进制文件已经使用了/lib,这在我的环境中似乎无法工作。我应该在哪里添加这些行?在recipe或local.conf中?请举个例子。