2008-11-21 21 views
7

Czy ktoś ma doświadczenie w uruchamianiu aplikacji w C++, które korzystają z bibliotek doładowania w systemach opartych na Uclibc? Czy to możliwe? Którą bibliotekę standardową C++ używałbyś? Czy uclibC++ można używać z doładowaniem?Czy mogę użyć boost na uclibc linux?

+0

Są przyjazne podręczniki obowiązują. Tylko, wiesz, mówiąc. Chciałbym też zapytać o używanie boostu w systemie wbudowanym, mimo wszystko ... wydaje się dużym obciążeniem dla pracy osadzonej. –

+0

Oceniam zwiększenie wydajności dla aplikacji klasy enterprise dla systemów klasy serwerowej, ale niektóre korzyści można uzyskać, ograniczając się do systemów wbudowanych. Nie jest to czysto osadzone lub użyłbym czegoś innego, ale doładowanie wnosi dużo do stołu, jeśli możesz je przechylić. – bmdhacks

+0

Boost ma wiele bibliotek, jestem pewien, że niektóre będą działać, a szanse na to, że niektóre nie będą działać. O których częściach pobudek mówimy? –

Odpowiedz

2

Używamy Zwiększ wraz z GCC 2.95.3, libstdC++ i STLport na ARMv4 platformie uruchomiony uClinux. Niektóre części Boost nie są kompatybilne z GCC 2.x, ale te, które działają dobrze w naszym konkretnym przypadku. Bibliotek, których używamy najczęściej są DATE_TIME, wiążą, funkcja, krotka i wątek.

Niektóre z bibliotek mieliśmy problemy ze były lambda, shared_pointer Format i . Problemy te były najprawdopodobniej spowodowane przez naszą wersję GCC, ponieważ ma ona problemy, gdy masz zbyt wiele poziomów podstawowych lub zawierasz głęboki poziom szablonów.

Jeśli to możliwe, poleciłbym uruchomić pakiet testowy doładowania z konkretnym zestawem narzędzi, aby zapewnić kompatybilność. Co najmniej można skompilować natywny toolchain, aby zapewnić kompatybilność wersji biblioteki.

Nie użyliśmy uClibC++, ponieważ nie jest to zalecane przez naszego dostawcę toolchain, więc nie mogę wypowiedzieć się na temat tej konkretnej kombinacji.

+0

Czy możesz wyjaśnić, używając jednocześnie STLport i libstdC++? Który z nich zwiększa łącze? – bmdhacks

+0

Przepraszamy, ale linki do STLport. –

0

Nie próbowałem, ale nie wiem nic na temat uclibc, które uniemożliwiłyby działanie Boost.

Spróbuj i zobacz, co się stanie, powiedziałbym.

+0

Funkcja Boost wymaga standardowej biblioteki C++, jeśli miałbym ją wypróbować, której biblioteki C++ będę używać? – bmdhacks

+0

Co więcej, "wypróbowanie" jest nieco uciążliwe dla systemów wbudowanych. Czy mówisz, że powinienem rozpalić mój krzyżowy kompilator i spędzić wiele godzin próbując uzyskać impuls i działająca biblioteka C++? Jeśli trafię na jakieś blokady dróg, czy po prostu spędzam z nim więcej czasu, czy też mogę stwierdzić, że jest to wykonalne? – bmdhacks

+0

W zależności od ilości informacji w pytaniu oryginalnym, "spróbuj" to jedyna odpowiedź, której powinieneś się spodziewać. "Czy mogę uruchomić KDE 4 na moim komputerze, proszę bez mojej zgody podaję dane techniczne dotyczące mojego komputera." –

2

Używamy wielu bibliotek Boost (wątek, system plików, sygnały, funkcja, bind, any, asio, smart_ptr, tuple) na Arcom Vulcan, co jest wprawdzie dość potężne dla urządzenia wbudowanego (64M RAM, 533MHz XScale) . Wszystko działa pięknie.

GCC 3.4, ale nie używamy uclib ++ (Arcom udostępnia toolchain, który zawiera libstd ++).

Wiele urządzeń wbudowanych z przyjemnością uruchomi wiele bibliotek funkcji Boost, zakładając przyzwoitą obsługę kompilatora. Wystarczy zachować ostrożność przy użytkowaniu. Biblioteki Boost podnoszą poziom abstrakcji i może być łatwiej użyć więcej zasobów niż myślisz.

+0

Dzięki za informacje. Czy podejrzewasz, że biblioteka libstdC++ firmy Arcom jest biblioteką GNU? Czy twój system zawiera glibc dla libc? – bmdhacks

+0

Tak, libstdC++ Arcom jest wersją GNU. I tak, używamy glibc. Uclib powinien również działać, ale nie (jeszcze) poszliśmy tą drogą. – MattyT

+0

Dzięki za informację, ale bardziej interesują mnie systemy oparte na systemie uclibc. Gdy zaczniesz używać glibc i GNU libstdC++, jesteś prawie taki sam jak dobry ole RedHat na x86. Możliwe, że glibc i GNU libstdC++ są jedynymi sposobami użycia boost, ale mam nadzieję, że ktoś wie, czy tak jest. – bmdhacks

1

Wyszukałem hasło "uclibc stlport". Wygląda na to, że istnieje co najmniej kilka wersji uclibc, dla których można kompilować stl (patrz this). Biorąc to pod uwagę, powiedziałbym, że Boost to tylko kilka kroków kompilacji. Przeczytałem wiadomość od Davida Abrahamsa (który jest aktywnym członkiem społeczności boosterów), która mówi, że Boost nie zależy bezpośrednio od używanej libc. Ale niektóre biblioteki mogą nadal powodować problemy, na przykład Boost.Python, ponieważ zależy to od czegoś innego (Python w moim przykładzie), który może być trudny do skompilowania z uclibc.

Nadzieja to pomaga

+0

Dzięki za pierwszą rozsądną odpowiedź. Dostałeś mnie w połowie drogi, co jest bardzo pomocne. Wciąż trzymam rękę dla kogoś z praktycznym doświadczeniem lub dowodem na to, że faktycznie jest on wykorzystywany, biorąc pod uwagę dużą nagrodę, którą zaoferowałem. – bmdhacks

0

Tak, możesz użyć boost przy pomocy polecenia uclibc.
Próbowałem tego z doładowaniem 1.45 & uClibc na ARM9260

  1. używać świeżych OpenEmbedded
  2. skonfigurować go używać angstrom
  3. Konfiguruj angstrom używać uClibc
  4. make impuls - bitbake zwiększyć
Powiązane problemy