c++ - Buildroot:仅构建一个包作为共享和静态库,所有其他包仅共享

标签 c++ c shared-libraries static-libraries buildroot

buildroot 提供构建的可能性

  • 仅静态,
  • 仅共享,
  • 或者共享库和静态库

所选软件包的数量。

分配的配置元素为 BR2_STATIC_LIBSBR2_STATIC_LIBSBR2_SHARED_STATIC_LIBS

问题:

是否可以为仅一个包构建共享库和静态库,同时仅为所有其他包构建共享库?

我想要一个静态库的项目是一个基于自动工具的包。

我的努力:

我确实阅读了手册,但无济于事。我确实提出了一个想法,但我认为它行不通:我可以让 buildroot 使用我定义的一些参数调用 configure 脚本,强制额外创建一个静态库。但是,这会与 buildroot 提供的参数发生冲突,从而迫使 configure 执行完全相反的操作。 (仅创建共享库。)

谢谢!

不幸的是,我什至无法判断我正在使用哪个版本的 buildroot,因为我没有找到获取 buildroots 版本号的方法。

最佳答案

Buildroot 不直接支持仅更改一个包的选项。这只会导致选项数量激增。

最简单的方法是编辑 package/foo/foo.mk 并向其中添加以下行:

FOO_CONF_OPTS += --enable-static

这些选项位于默认自动配置选项(其中包含 --enable-shared --disable-static)之后,因此将覆盖它们。

如果您不想触及 Buildroot 源代码,您也可以在 local.mkBR2_EXTERNAL 中执行此操作 - 请参阅手册了解如何操作设置这些。

Buildroot 版本号编码在 Makefile 顶部的变量 BR2_VERSION 中(当前 master 中的第 90 行)。您还可以查看生成的 .config 文件的顶部,其中包含使用 git commit 哈希扩展的版本。

关于c++ - Buildroot:仅构建一个包作为共享和静态库,所有其他包仅共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45958904/

相关文章:

c# - 添加依赖于非托管 C++ 项目的托管 DLL

c++ - 正态分布发生器的种类

process - 监视进程是否已在 C 中终止

c - 在结构字段(列表)中填充 Char*

c++ - 如何使用 ld 创建共享库?

c++ - 你应该如何防御?

c - 后缀/前缀运算符优先级和结合性

c++ - 如何在 Linux 上初始化共享库

c++ - 编译的共享库依赖于特定的 libicuuc.so.46 版本

c++ - 如何确定CRC16初始校验和,因此校验和为零