Могу ли я использовать boost на uclibc linux?

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


person bmdhacks    schedule 21.11.2008    source источник
comment
Сохранились дружественные руководства. Просто, знаете, говорю. В любом случае я бы также поставил под сомнение использование boost во встроенной системе ... кажется, что для встроенной работы много накладных расходов.   -  person Paul Nathan    schedule 21.11.2008
comment
Я оцениваю ускорение для корпоративного приложения для систем серверного класса, но есть некоторые преимущества в масштабировании до встроенных систем. Это не просто встроенное устройство, иначе я бы использовал что-то другое, но boost дает много преимуществ, если вы можете его использовать.   -  person bmdhacks    schedule 21.11.2008
comment
В Boost есть много библиотек, я уверен, что некоторые из них будут работать, а некоторые, скорее всего, не будут работать. О каких частях наддува идет речь?   -  person Leon Timmermans    schedule 21.11.2008
comment
Я не привередлив, если вы использовали какие-либо, я хотел бы знать.   -  person bmdhacks    schedule 21.11.2008


Ответы (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++, потому что это не то, что рекомендует наш поставщик инструментов, поэтому я не могу комментировать эту конкретную комбинацию.

person David Holm    schedule 25.02.2009
comment
Можете ли вы уточнить, как использовать STLport и libstdС++ вместе? Какой из них повышает ссылку на? - person bmdhacks; 27.02.2009

Мы используем многие библиотеки Boost (потоки, файловая система, сигналы, функции, привязки, любые, asio, smart_ptr, tuple) на Arcom Vulcan, который, по общему признанию, довольно мощный для встроенного устройства (64 МБ ОЗУ, 533 МГц XScale). Все работает красиво.

GCC 3.4, но мы не используем uclib++ (Arcom предоставляет набор инструментов, включающий libstd++).

Многие встраиваемые устройства будут успешно запускать многие библиотеки Boost, при условии хорошей поддержки компилятора. Просто будьте осторожны с использованием. Библиотеки Boost повышают уровень абстракции, и можно легко использовать больше ресурсов, чем вы думаете.

person MattyT    schedule 21.11.2008
comment
Спасибо за информацию. Вы подозреваете, что libstdc++ от Arcom — это библиотека GNU? Включает ли ваша система glibc для libc? - person bmdhacks; 22.11.2008
comment
Да, libstdc++ от Arcom — это версия GNU. И да, мы используем glibc. uclib тоже должен работать, но мы (пока) не пошли по этому пути. - person MattyT; 24.11.2008
comment
Спасибо за информацию, но меня больше интересуют системы на базе uclibc. Как только вы начнете использовать glibc и GNU libstdc++, вы будете почти такими же, как старый добрый RedHat на x86. Возможно, glibc и GNU libstdc++ — единственные способы использования boost, но я надеюсь, что кто-нибудь знает, так ли это. - person bmdhacks; 24.11.2008
comment
ой, извините, мышка балуется, и я поставил точку. Я попытался добавить его снова, но он не позволил мне установить его на ноль - так что теперь вы +1 (хотя вы на самом деле не ответили на вопрос - об использовании uclibc). - person Dipstick; 20.02.2009

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

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

person Benoît    schedule 20.02.2009
comment
Спасибо за первый разумный ответ. Ты помог мне на полпути, что очень полезно. Я все еще жду кого-нибудь с практическим опытом или доказательством того, что это действительно развернуто, учитывая большую награду, которую я предложил. - person bmdhacks; 25.02.2009

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

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

person Zan Lynx    schedule 21.11.2008
comment
Для Boost требуется стандартная библиотека C++, если бы я попробовал, какую библиотеку C++ я бы использовал? - person bmdhacks; 21.11.2008
comment
Кроме того, попытка это немного утомительна для встраиваемых систем. Вы говорите, что я должен запустить свой кросс-компилятор и потратить часы и часы, пытаясь получить ускорение и работающую библиотеку С++? Если я сталкиваюсь с какими-либо препятствиями, я просто трачу больше времени на это или делаю вывод, что это выполнимо? - person bmdhacks; 21.11.2008
comment
Основываясь на количестве информации в исходном вопросе, попробуйте это единственный ответ, который вы должны ожидать получить. Можно ли запустить KDE 4 на моем компьютере, пожалуйста, ответьте без предоставления каких-либо характеристик моего компьютера. - person Max Lybbert; 22.11.2008
comment
Это глупо. Вы говорите, что никто никогда не использовал библиотеки повышения в системе uclibc? Мне не нужен ответ на какие-либо подробности, мне просто интересно, пытался ли кто-нибудь хотя бы выполнить какой-либо аспект этой задачи, прежде чем тратить мое время на бесплодные поиски. Почему это неразумно? - person bmdhacks; 22.11.2008

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

  1. Используйте свежий OpenEmbedded
  2. Настройте его для использования Angstrom
  3. Настройте Angstrom для использования uclibc
  4. сделать буст - bitbake boost
person nk1973    schedule 25.01.2011