【问题标题】:Can I use boost on uclibc linux?我可以在 uclibc linux 上使用 boost 吗?
【发布时间】:2008-11-21 18:16:08
【问题描述】:

有没有人有在基于 uclibc 的系统上运行使用 boost 库的 C++ 应用程序的经验?甚至可能吗?你会使用哪个 C++ 标准库? uclibc++ 可以和 boost 一起使用吗?

【问题讨论】:

  • 现有友好的手册。只是,你知道,说。无论如何,我也会质疑在嵌入式系统上使用 boost...对于嵌入式工作来说似乎有很多开销。
  • 我正在评估用于服务器级系统的企业应用程序的提升,但缩小到嵌入式系统有一些好处。这不是纯粹的嵌入式,或者我会使用其他东西,但是如果你可以摆动它,boost 会给桌面带来很多好处。
  • Boost 有很多库,我相信有些会起作用,而有些可能不起作用。我们在谈论 boost 的哪些部分?
  • 我不挑剔,如果你用过我想知道的。

标签: c++ linux boost uclinux uclibc


【解决方案1】:

我们在运行 uClinux 的 ARMv4 平台上将 Boost 与 GCC 2.95.3、libstdc++ 和 STLport 一起使用。 Boost 的某些部分与 GCC 2.x 不兼容,但在我们的特定情况下运行良好的部分。我们使用最多的库是date_timebindfunctiontuplethread em>。

我们遇到问题的一些库是 lambdashared_pointerformat。这些问题很可能是由我们的 GCC 版本引起的,因为当您包含过多的模板结构或深度级别的模板结构时,它会出现问题。

如果可能,我建议您使用特定工具链运行 boost 测试套件以确保兼容性。至少您可以编译一个原生工具链,以确保您的库版本兼容。

我们没有使用 uClibc++,因为这不是我们的工具链提供商推荐的,所以我无法评论那个特定的组合。

【讨论】:

  • 你能澄清一下同时使用 STLport 和 libstdc++ 吗? boost 链接到哪一个?
【解决方案2】:

我们在Arcom Vulcan 上使用了许多 Boost 库(线程、文件系统、信号、函数、绑定、any、asio、smart_ptr、元组),这对于嵌入式设备(64M RAM、533MHz XScale)来说无疑是非常强大的)。一切都很漂亮。

GCC 3.4 但我们没有使用 uclib++(Arcom 提供了一个包含 libstd++ 的工具链)。

假设编译器支持良好,许多嵌入式设备将愉快地运行许多 Boost 库。请注意使用。 Boost 库提高了抽象级别,并且可以轻松使用比您想象的更多的资源。

【讨论】:

  • 感谢您的信息。你怀疑 Arcom 的 libstdc++ 是 GNU 库吗?您的系统是否包含用于 libc 的 glibc?
  • 是的,Arcom 的 libstdc++ 是 GNU 版本。是的,我们使用 glibc。 uclib 应该也可以工作,但我们还没有(还)走这条路。
  • 感谢您的信息,但我对基于 uclibc 的系统更感兴趣。一旦你开始使用 glibc 和 GNU libstdc++,你就和 x86 上的优秀 ole RedHat 差不多了。 glibc 和 GNU libstdc++ 可能是使用 boost 的唯一方法,但我希望有人知道是否是这种情况。
  • 哎呀 - 抱歉,我的鼠标正在播放,我停了一个点。我尝试再次添加它,但它不允许我将其设置为零 - 所以你现在 +1(即使你实际上没有回答问题 - 关于使用 uclibc)。
【解决方案3】:

我用谷歌搜索了“uclibc stlport”。似乎至少有几个版本的 uclibc 可以编译 stlport(参见this)。 鉴于此,我想说 Boost 只需几个编译步骤即可。我读过 David Abrahams(他是 boost 社区的活跃成员)的一条消息,说 Boost 不直接依赖于使用的 libc。但是某些库可能仍然会导致问题,例如 Boost.Python,因为它依赖于其他可能难以用 uclibc 编译的东西(在我的示例中是 Python)。

希望对你有帮助

【讨论】:

  • 感谢第一个合理的答案。你让我走到了一半,这非常有帮助。考虑到我提供的巨额赏金,我仍在等待有实际经验或有实际部署证据的人。
【解决方案4】:

我没有尝试过,但我不知道任何关于 uclibc 会阻止 Boost 工作的信息。

试试看会发生什么,我会说。

【讨论】:

  • Boost 需要一个标准的 C++ 库,如果我要尝试,我会使用哪个 C++ 库?
  • 此外,“尝试”对于嵌入式系统来说有点痛苦。你是说我应该启动我的交叉编译器并花费数小时试图让 boost 和 c++ 库正常工作吗?如果我遇到任何障碍,我是只是花更多时间在它上面,还是我认为它是可行的?
  • 根据原始问题中的信息量,“尝试一下”是您应该期望得到的唯一答案。 “是否可以在我的计算机上运行 KDE 4,请在我不提供有关我的计算机的任何规格的情况下回答。”
  • 这很愚蠢。你是说没有人在 uclibc 系统上使用过任何 boost 库吗?我不需要任何细节的答案,我只是想知道是否有人尝试过这项任务的任何方面,然后才将我的时间浪费在徒劳无功的追求上。为什么不合理?
【解决方案5】:

是的,您可以将 boost 与 uclibc 一起使用。
我在 ARM9260 上使用 boost 1.45 和 uclibc 进行了尝试

  1. 使用新鲜的 OpenEmbedded
  2. 将其配置为使用 Angstrom
  3. 配置 Angstrom 以使用 uclibc
  4. make boost - bitbake boost

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-26
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    相关资源
    最近更新 更多