【问题标题】:Buildroot: Build only one package as both shared and static lib, all others shared onlyBuildroot:仅将一个包构建为共享库和静态库,所有其他包仅共享
【发布时间】:2017-08-30 11:13:04
【问题描述】:

buildroot 提供了构建的可能性

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

选定的包。

分配的配置元素是BR2_STATIC_LIBSBR2_STATIC_LIBSBR2_SHARED_STATIC_LIBS

问题:

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

我想要一个静态库的项目是一个基于 autotools 的包。

我的努力:

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

谢谢!

很遗憾,我什至不知道我正在使用哪个版本的 buildroot,因为我没有找到获取 buildroot 版本号的方法。

【问题讨论】:

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


    【解决方案1】:

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

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

    FOO_CONF_OPTS += --enable-static
    

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

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

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

    【讨论】:

    • 定义FOO_CONF_OPTS 也是我的想法。但是,我不知道后续选项会覆盖前面的选项。这确实使它成为一个解决方案!
    • 请注意,大多数但不是所有 Buildroot 支持的包都是 autoconf 包,并且大多数但不是所有 autoconf 包都支持“--enable-static”选项。所以 YMMV 关于“--enable-static”。您需要仔细查看各个包的构建系统。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    相关资源
    最近更新 更多