Domanda

Qualcuno ha esperienza con l'esecuzione di applicazioni C ++ che usano le librerie boost su sistemi basati su uclibc? È anche possibile? Quale libreria standard C ++ useresti? Uclibc ++ è utilizzabile con boost?

È stato utile?

Soluzione

Usiamo Boost insieme a GCC 2.95.3, libstdc ++ e STLport su una piattaforma ARMv4 con uClinux. Alcune parti di Boost non sono compatibili con GCC 2.x ma quelle che funzionano bene nel nostro caso particolare. Le librerie che utilizziamo di più sono date_time , bind , function , tuple e thread .

Alcune delle librerie con cui abbiamo avuto problemi erano lambda , shared_pointer e formato . Molto probabilmente questi problemi sono stati causati dalla nostra versione di GCC poiché presenta problemi quando si hanno troppe inclusioni o livelli profondi di strutture di modelli.

Se possibile, ti consiglio di eseguire la suite di boost test con la tua particolare toolchain per garantire la compatibilità. Almeno potresti compilare una toolchain nativa al fine di garantire che le versioni della tua libreria siano compatibili.

Non abbiamo usato uClibc ++ perché non è quello che il nostro fornitore di toolchain consiglia, quindi non posso commentare quella particolare combinazione.

Altri suggerimenti

Stiamo usando molte delle librerie Boost (thread, filesystem, signal, function, bind, any, asio, smart_ptr, tuple) su un Arcom Vulcan che è certamente abbastanza potente per un dispositivo incorporato (64M RAM, 533MHz XScale). Tutto funziona magnificamente.

GCC 3.4 ma non stiamo usando uclib ++ (Arcom fornisce una toolchain che include libstd ++).

Molti dispositivi embedded eseguiranno felicemente molte delle librerie Boost, presupponendo un supporto decente per i compilatori. Basta fare attenzione con l'uso. Le librerie Boost aumentano il livello di astrazione e può essere facile usare più risorse di quanto si pensi.

Ho cercato su Google " uclibc stlport " ;. Sembra che ci siano almeno alcune versioni di uclibc per le quali è possibile compilare stlport (vedi questo ). Detto questo, direi che Boost è solo a pochi passi dalla compilation. Ho letto un messaggio di David Abrahams (che è un membro attivo della community boost) che afferma che Boost non dipende direttamente dalla libc usata. Ma alcune librerie possono ancora causare problemi, ad esempio Boost.Python, poiché dipende da qualcos'altro (Python nel mio esempio) che potrebbe essere difficile da compilare con uclibc.

Spero che questo aiuti

Non ho provato ma non so nulla di uclibc che impedirebbe a Boost di funzionare.

Provalo e vedi cosa succede, direi.

Sì, puoi usare boost con uclibc.
Ho provato questo con boost 1.45 & amp; uclibc su ARM9260

  1. Usa un nuovo OpenEmbedded
  2. Configuralo per usare Angstrom
  3. Configura Angstrom per usare uclibc
  4. make boost - bitbake boost
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top