Вопрос

Есть ли у кого-нибудь опыт работы с приложениями C ++, которые используют библиотеки boost в системах на основе uclibc? Это вообще возможно? Какую стандартную библиотеку C ++ вы бы использовали? Можно ли использовать uclibc ++ с boost?

Это было полезно?

Решение

Мы используем Boost вместе с GCC 2.95.3, libstdc ++ и STLport на платформе ARMv4 под управлением uClinux. Некоторые части Boost несовместимы с GCC 2.x, но те, которые хорошо работают в нашем конкретном случае. Наиболее используемыми библиотеками являются date_time , bind , function , tuple и thread .

Некоторые библиотеки, с которыми у нас были проблемы, были lambda , 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 (см. это ). Учитывая это, я бы сказал, что Boost находится всего в нескольких шагах от компиляции. Я прочитал сообщение Дэвида Абрахамса (который является активным членом сообщества Boost), в котором говорится, что Boost не зависит напрямую от используемого libc. Но некоторые библиотеки все еще могут вызывать проблемы, например Boost.Python, поскольку это зависит от чего-то другого (Python в моем примере), которое может быть трудно скомпилировать с помощью uclibc.

Надеюсь, это поможет

Я не пробовал, но я не знаю ничего о uclibc, которое бы мешало работе Boost.

Попробуйте и посмотрите, что произойдет, я бы сказал.

Да, вы можете использовать boost с uclibc.
Я пробовал это с надстройкой 1.45 & amp; uclibc на ARM9260

<Ол>
  • Используйте свежую версию OpenEmbedded
  • Настройте его для использования Angstrom
  • Настройте Angstrom для использования uclibc
  • make boost - bitbake boost
  • Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top