我正在替换旧的交叉编译工具链,但我不知道如何让 buildroot 包含像旧工具链那样的
host/.../sysroot/usr/include/boost
。
背景:
我正在尝试构建一个 docker 映像,可用于在 GitHub Actions 中为 MiyooCFW 交叉编译软件。这是我的当前 Dockerfile。
项目从 uClibc 迁移到 musl libc,这就是工具链需要更新的原因。
实际有效的旧工具链是 Google Drive 上的 .zip 文件。我认为它可能是在这个
buildroot fork中使用
Makefile.legacy
构建的。较新的使用 make sdk
和主 Makefile
。 (有一些文档,但不完整。)
我安装了
libboost-all-dev
,它将库放入 /usr/include/boost/
中,但仅安装它们显然是不够的。
GMenuNX是我正在尝试交叉编译的一个示例程序,它依赖于boost。
steward
分支使用带有旧工具链的docker镜像,并且编译成功。 ci
分支使用我的新 docker 镜像,并且 fails 为:
/opt/miyoo/bin/arm-linux-g++ -ggdb -DTARGET_MIYOO -DTARGET=miyoo -D__BUILDTIME__="\"2022-02-19 18:33\"" -DLOG_LEVEL=3 -I/opt/miyoo/arm-buildroot-linux-musleabi/sysroot/usr/bin/../../usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -I/opt/miyoo/usr/include/ -I/opt/miyoo/arm-buildroot-linux-musleabi/sysroot/usr/include/ -I/opt/miyoo/arm-buildroot-linux-musleabi/sysroot/usr/include/SDL/ -o objs/miyoo/src/selector.o -c src/selector.cpp
src/selector.cpp:34:10: fatal error: boost/algorithm/string.hpp: No such file or directory
34 | #include <boost/algorithm/string.hpp>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile.miyoo:31: objs/miyoo/src/selector.o] Error 1
Error: Process completed with exit code 2.
我还尝试手动复制 boost 库,但这只是给我带来了一堆不同错误。
最后,如果还不是很明显的话,我在 buildroot、交叉编译等方面完全是个菜鸟。我什至不经常使用 c++。我很可能错过了一些明显的事情。
如果您希望 Buildroot 工具链包含 Boost 库,请在 Buildroot 配置中启用 Boost 包:BR2_PACKAGE_BOOST=y。它有许多子选项,请确保启用与您相关的子选项。
在您的计算机上安装 Boost 对工具链 sysroot 中可用的库的影响绝对为零。