Есть ли у кого-нибудь опыт работы с приложениями на C++, которые используют библиотеки boost в системах на основе uclibc? Возможно ли это? Какую стандартную библиотеку C++ вы бы использовали? Является ли uclibC++ пригодным для повышения?Могу ли я использовать boost на uclibc linux?
ответ
Мы используем Повысьте вместе с GCC 2.95.3, libstdC++ и STLport на ARMV4 платформы под управлением uClinux. Некоторые части Boost не совместимы с GCC 2.x, но те, которые хорошо работают в нашем конкретном случае. Библиотеки, которые мы используем, большинство из них date_time, связывают, функция, кортеж и нить.
Некоторые библиотеки мы имели проблемы с были лямбда, shared_pointer и формат. Эти проблемы, скорее всего, были вызваны нашей версией GCC, поскольку у нее есть проблемы, когда у вас слишком много включений или глубоких уровней структуры шаблонов.
Если возможно, я бы порекомендовал вам запустить пакет тестирования boost с вашей конкретной инструментальной цепочкой для обеспечения совместимости. По крайней мере, вы можете скомпилировать собственную инструментальную цепочку, чтобы обеспечить совместимость версий вашей библиотеки.
Мы не использовали uClibC++, потому что это не то, о чем рекомендует наш поставщик инструментальных средств, поэтому я не могу прокомментировать эту конкретную комбинацию.
Можете ли вы прояснить использование как STLport, так и libstdC++ вместе? К какой из них добавляется ссылка? – bmdhacks
Извините, он ссылается на STLport. –
Я не пробовал, но я ничего не знаю о uclibc, который предотвратит работу Boost.
Попробуйте и посмотрите, что произойдет, я бы сказал.
Boost требует стандартную библиотеку C++, если бы я попробовал, какую библиотеку C++ я бы использовал? – bmdhacks
Кроме того, «попытка» - это немного боль для встроенных систем. Вы говорите, что я должен запустить мой кросс-компилятор и тратить часы и часы, пытаясь получить повышение, и работать с библиотекой C++? Если я ударил все препятствия, я просто потрачу больше времени на это, или я заключу, что это выполнимо? – bmdhacks
Основываясь на количестве информации в исходном вопросе, «попробуйте» - это единственный ответ, который вы должны ожидать получить. «Возможно ли запустить KDE 4 на моем компьютере, пожалуйста, ответьте без меня, указав какие-либо спецификации моего компьютера». –
Мы используем многие библиотеки Boost (поток, файловую систему, сигналы, функцию, bind, any, asio, smart_ptr, tuple) на Arcom Vulcan, который, по общему признанию, довольно мощный для встроенного устройства (64M RAM, 533MHz XScale) , Все работает красиво.
GCC 3.4, но мы не используем uclib ++ (Arcom предоставляет инструментальную цепочку, которая включает в себя libstd ++).
Многие встроенные устройства с радостью запускают многие библиотеки Boost, предполагая достойную поддержку компилятора. Просто позаботьтесь об использовании. Библиотеки Boost повышают уровень абстракции, и вы можете легко использовать больше ресурсов, чем вы думаете.
Спасибо за информацию. Вы подозреваете, что libstdC++ Arcom является библиотекой GNU? Включает ли ваша система glibc для libc? – bmdhacks
Да, LibstdC++ от Arcom - это версия GNU. И да, мы используем glibc. uclib также должен работать, но мы еще не пошли по этому пути. – MattyT
Спасибо за информацию, но меня больше интересуют системы на основе uclibc. После того, как вы начнете использовать glibc и GNU libstdC++, вы в значительной степени будете такими же, как и хороший Redle на x86. Возможно, что glibc и GNU libstdC++ - единственные способы использования boost, но я надеюсь, что кто-то знает, так ли это. – bmdhacks
I googled "uclibc stlport". Кажется, есть, по крайней мере, несколько версий uclibc, для которых stlport может быть скомпилирован (см. this). Учитывая это, я бы сказал, что Boost - это всего лишь несколько шагов компиляции. Я прочитал сообщение Дэвида Абрахама (который является активным членом сообщества повышения), в котором говорится, что Boost не зависит напрямую от используемого libc. Но некоторые библиотеки могут по-прежнему вызывать проблемы, например Boost.Python, поскольку это зависит от чего-то еще (Python в моем примере), который может быть сложно скомпилировать с помощью uclibc.
Надеется, что это помогает
Спасибо за первый разумный ответ. Вы получили меня на полпути, что очень полезно. Я все еще держусь за кого-то, у кого есть практический опыт или доказательства того, что это действительно развертывается, учитывая большую щедрость, которую я предлагал. – bmdhacks
Да, вы можете использовать boost с uclibc.
Я пробовал это с boost 1.45 & uclibc на ARM9260
- Используйте свежие OpenEmbedded
- настроить его на использование Ангстрем
- Настройка ангстрем использовать uclibc
- грим импульс - Bitbake увеличить
Есть дружелюбные руководства дошедших до нас. Просто, знаешь, говоришь. В любом случае, я бы поставил под вопрос использование boost на встроенной системе ... кажется, много накладных расходов на встроенную работу. –
Я оцениваю повышение для приложения enterpriseisey для систем серверного класса, но есть некоторые преимущества для масштабирования до встроенных систем. Это не чисто встроенное, или я бы использовал что-то еще, но boost приносит много к таблице, если вы можете качать его. – bmdhacks
У Boost есть много библиотек, я уверен, что некоторые из них будут работать, и некоторые из них не будут работать. О каких деталях мы говорим? –