带有 boost 1.77 的 yocto 图像:libboost_atomic.so 不在图像上,但在 sdk 中

yocto image with boost 1.77: libboost_atomic.so is not on image, but is in sdk

我有一个基于 aarch64 的 yocto 图像,它还包含一个应用程序,我将其编译为一个包,该应用程序使用并链接到 boost 1.77,并使用 boost::filesystem 使用 cmake。图片上的应用程序运行正常,一切正常。

我遇到的问题是:我还为 yocto 生成了 SDK 部分,该 SDK 包含所有 boost 库,还有一些不在图像上的库,例如 libboost_atomic.so。当我使用 SDK 从外部编译我的应用程序时,它也会链接到 libboost_atomic.so.

当然,它不在图像上,所以我不能 运行 在我的设备上,因为它在 运行 时找不到原子库。那么我该如何解决这个问题呢? libboost_atomic.so 库似乎并不是真的需要,但 sdk 认为它需要。

我正在使用 yocto Honister。

您需要将 boost 添加到 IMAGE_INSTALL。 否则 Yocto 将只安装部署到映像的组件中使用的库。

我发现了问题:对于 SDK,我使用了一个 cmake 工具链文件,因此该文件不包含 yocto 使用的链接器选项:-Wl,--as-needed

因此,使用该选项,链接器不再链接到 libboost_atomic.so,我可以 运行 在图像上使用我的 sdk 编译版本!