有没有人有在基于 uclibc 的系统上运行使用 boost 库的 C++ 应用程序的经验?甚至可能吗?你会使用哪个 C++ 标准库?uclibc++ 可以与 boost 一起使用吗?
5 回答
我们在Arcom Vulcan上使用了许多 Boost 库(线程、文件系统、信号、函数、绑定、任何、asio、smart_ptr、元组),这对于嵌入式设备(64M RAM,533MHz XScale)来说非常强大。一切都很漂亮。
GCC 3.4,但我们没有使用 uclib++(Arcom 提供了一个包含 libstd++ 的工具链)。
假设编译器支持良好,许多嵌入式设备将愉快地运行许多 Boost 库。请注意使用。Boost 库提高了抽象级别,并且可以轻松使用比您想象的更多的资源。
我们在运行 uClinux 的 ARMv4 平台上将 Boost 与 GCC 2.95.3、libstdc++ 和 STLport 一起使用。Boost 的某些部分与 GCC 2.x 不兼容,但在我们的特定情况下运行良好的部分。我们使用最多的库是date_time、bind、function、tuple和thread。
我们遇到的一些库是lambda、shared_pointer和format。这些问题很可能是由我们的 GCC 版本引起的,因为当您包含过多的模板结构或深度级别的模板结构时,它会出现问题。
如果可能的话,我建议您使用您的特定工具链运行 boost 测试套件以确保兼容性。至少你可以编译一个本地工具链,以确保你的库版本是兼容的。
我们没有使用 uClibc++,因为这不是我们的工具链提供商推荐的,所以我无法评论那个特定的组合。
我用谷歌搜索了“uclibc stlport”。似乎至少有几个版本的 uclibc 可以编译 stlport(请参阅this)。鉴于此,我想说 Boost 只需几个编译步骤即可。我读过 David Abrahams(他是 boost 社区的活跃成员)的消息,其中说 Boost 不直接依赖于使用的 libc。但是某些库可能仍然会导致问题,例如 Boost.Python,因为它依赖于其他可能难以用 uclibc 编译的东西(在我的示例中是 Python)。
希望这可以帮助
我没有尝试过,但我不知道任何关于 uclibc 会阻止 Boost 工作的信息。
试试看,看看会发生什么,我会说。
是的,您可以将 boost 与 uclibc 一起使用。
我在 ARM9260 上使用 boost 1.45 和 uclibc 进行了尝试
- 使用新鲜的 OpenEmbedded
- 将其配置为使用 Angstrom
- 配置 Angstrom 以使用 uclibc
- 提升 - bitbake 提升