Могу ли я использовать boost на uclibc linux?
Вопрос
Есть ли у кого-нибудь опыт работы с приложениями 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