Есть ли у кого-нибудь опыт запуска приложений C++, использующих библиотеки boost, в системах на основе uclibc? Это вообще возможно? Какую стандартную библиотеку C++ вы бы использовали? Можно ли использовать uclibС++ с повышением?
Могу ли я использовать boost на uclibc linux?
Ответы (5)
Мы используем Boost вместе с GCC 2.95.3, libstdc++ и STLport на платформе ARMv4 под управлением uClinux. Некоторые части Boost несовместимы с GCC 2.x, но те, которые совместимы, хорошо работают в нашем конкретном случае. Чаще всего мы используем следующие библиотеки: date_time, bind, function, tuple и thread.
Некоторыми из библиотек, с которыми у нас были проблемы, были лямбда, shared_pointer и format. Эти проблемы, скорее всего, были вызваны нашей версией GCC, поскольку у вас есть проблемы, когда у вас слишком много включений или слишком много уровней шаблонных структур.
Если возможно, я бы порекомендовал вам запустить набор ускоренных тестов с вашим конкретным набором инструментов, чтобы обеспечить совместимость. По крайней мере, вы можете скомпилировать собственный набор инструментов, чтобы убедиться, что ваши версии библиотек совместимы.
Мы не использовали uClibc++, потому что это не то, что рекомендует наш поставщик инструментов, поэтому я не могу комментировать эту конкретную комбинацию.
Мы используем многие библиотеки Boost (потоки, файловая система, сигналы, функции, привязки, любые, asio, smart_ptr, tuple) на Arcom Vulcan, который, по общему признанию, довольно мощный для встроенного устройства (64 МБ ОЗУ, 533 МГц XScale). Все работает красиво.
GCC 3.4, но мы не используем uclib++ (Arcom предоставляет набор инструментов, включающий libstd++).
Многие встраиваемые устройства будут успешно запускать многие библиотеки Boost, при условии хорошей поддержки компилятора. Просто будьте осторожны с использованием. Библиотеки Boost повышают уровень абстракции, и можно легко использовать больше ресурсов, чем вы думаете.
Я погуглил "uclibc stlport". Кажется, есть по крайней мере несколько версий uclibc, для которых можно скомпилировать stlport (см. noreferrer">это). Учитывая это, я бы сказал, что Boost находится всего в нескольких шагах от компиляции. Я прочитал сообщение Дэвида Абрахамса (который является активным членом сообщества Boost), в котором говорится, что Boost не зависит напрямую от используемой libc. Но некоторые библиотеки все еще могут вызывать проблемы, например Boost.Python, поскольку они зависят от чего-то еще (в моем примере от Python), что может быть сложно скомпилировать с помощью uclibc.
Надеюсь это поможет
Я не пробовал, но ничего не знаю о uclibc, что могло бы помешать работе Boost.
Попробуйте и посмотрите, что получится, я бы сказал.
Да, вы можете использовать boost с uclibc.
Я пробовал это с boost 1.45 и uclibc на ARM9260.
- Используйте свежий OpenEmbedded
- Настройте его для использования Angstrom
- Настройте Angstrom для использования uclibc
- сделать буст - bitbake boost