Quali strumenti utilizzare per lo sviluppo Embedded Linux C ++ con un compilatore veloce e possibilmente cross-platform [chiuso]

4

Non sono soddisfatto del nostro ambiente di sviluppo per le nostre apparecchiature basate su Linux (Ubuntu 10.04). È un software incorporato che stiamo sviluppando. Quello che vorrei è avere il mix ottimale di questi desideri:

  • Utilizza strumenti e librerie comprovati
  • Essere in grado di sviluppare sia su Linux che su Windows
    • Idealmente: usa gli stessi strumenti su entrambe le piattaforme
  • Avere cicli di sviluppo rapidi, specialmente su Windows

Nota che pagare per cose buone è sicuramente un'opzione. Nota anche che C ++ e Linux sono gli unici due requisiti difficili, tutto il resto è aperto al dibattito.

Al momento utilizziamo librerie Boost e STL per ottenere la massima indipendenza dalla piattaforma. CodeBlocks è il nostro IDE multipiattaforma e usiamo la catena di strumenti gcc (compilatore, linker, debugger, non make). Tutti sono eccellenti progetti open source ma hanno i loro limiti.

I più grandi problemi con l'ambiente attuale:

  1. Rispetto a MS Visual C ++, sento che gcc è molto lento. Viene dedicato molto tempo alla compilazione e in particolare al collegamento. Il supporto di intestazione precompilato di gcc non ti dà quasi lo stesso vantaggio in termini di prestazioni di VC e con l'aumento di cui hai davvero bisogno. Inoltre, il collegamento statico di alcune librerie di boost richiede per sempre. (Utilizzerebbe il collegamento dinamico cambiare molto?)
  2. CodeBlocks non ha supporto per ciò che in VC sono file di proprietà. Ciò rende difficile far rispettare le opzioni di generazione per tutti i progetti nello spazio di lavoro.
  3. In relazione alla velocità di costruzione: CodeBlocks non ha il supporto per "compilare solo questo progetto" come VC. Quando si modifica un singolo file sorgente, CodeBlocks impiega troppo tempo a verificare la necessità di compilare i file che so non sono stati modificati.

Alcuni dei miei pensieri fino ad ora:

  • Il problema più grande è avere un compilatore e un linker veloce e affidabile su tutte le piattaforme su cui sviluppiamo. Se questo è risolto, cosa ne pensi di fare lo sviluppo su più piattaforme? I compilatori Intel C ++ sono un'opzione (non abbiamo davvero bisogno dell'ottimizzazione delle prestazioni di questi compilatori)? Dovremmo considerare la compilazione incrociata?
  • Dovremmo usare una build basata su make? Sembra una soluzione quando si dimostra difficile utilizzare lo stesso tool IDE / build su Windows e Linux. Trovo difficile renderlo così che mi trattiene.
  • Esiste un singolo prodotto di durata equivalente come Visual Studio (IDE e catena di strumenti) disponibile per Windows e Linux? O del resto, solo per Linux?
  • Quanto più semplice sarebbe la vita se decidessimo di sviluppare solo su Linux? In questo momento tutti usiamo Windows perché è supportato dall'IT, il nostro software non di sviluppo è tutto Windows e abbiamo una competenza limitata di Linux nella nostra azienda.

I tuoi pensieri per favore.

    
posta Mark 25.07.2011 - 09:37
fonte

2 risposte

1

Ho sentito che il "migliore" IDE per C ++ dev su Linux è Netbeans . Ovviamente, Code: Blocks è open source, quindi puoi vedere cosa sta facendo quando decidi cosa compilare e sistemarlo :) Non ci sono bug aperti sulla velocità che potrei vedere nel loro bugtracker

Compilation: puoi accelerarlo con makefile, ma suppongo (ha!) che Code :: Blocks usi makefles sotto le copertine. Sicuramente, mi aspetto che tu abbia un problema con il tuo setup, e un po 'di indagine è in ordine. Altrimenti, suddividere l'ambiente in librerie e compilarle separatamente ti avvantaggerebbe.

Non sono sicuro del motivo per cui ritieni che il GCC pch sia così brutto. Visual Studio funziona compilando tutto ciò che fa riferimento a stdafx.h in un file pch, quindi perché non organizzi il tuo codice nello stesso modo: crea un file "stdafx.h" che include tutte le altre intestazioni e, con il flag -x , fatelo costruire in un'intestazione precompilata. Dovrebbe essere molto veloce allora.

File di progetto: non hai file 'spazio di lavoro' che contengono tutti i dettagli. Se è così, sicuramente l'aggiornamento delle proprietà tra i progetti è un compito davvero semplice di aggiornare questi file nel blocco note! A volte lo faccio per i file .vcproj di Visual Studio: ne modifico molti utilizzando il blocco note (o winmerge) per applicare un'impostazione di progetto a più file di progetto quando faccio clic sulle finestre di dialogo delle proprietà sarebbe incredibilmente lungo e noioso.

Make: make è davvero facile. Tanto che i tuoi file di progetto VS sono (ora) una rappresentazione basata su XML di makefile. La maggior parte dei makefile specifica semplicemente le opzioni del compilatore da usare, e poi ha una sezione che dice "trasforma tutto .cpp in .o file" con una linea che poi dice quali file .o collegarsi per creare l'app. Davvero facile, dedica 10 minuti a comprenderlo e ne varrà la pena. Se preferisci non usare i makefile, prova qualcosa come Ant .

Scoprirai che gcc è un buon compilatore, che spesso genera codice più veloce di VC ++! Passare al compilatore Intel (un'altra buona scelta) ti lascerebbe comunque richiedere un IDE, a meno che non ti piaccia Eclipse con cui viene fornito.

Se hai Windows e scrivi codice per Windows, e hai più esperienza con Windows e VS, perché non stai usando completamente VS? La compilazione incrociata è un'opzione, ma se crei alcuni makefile e un server di compilazione, potresti avere una finestra Linux per compilare automaticamente il codice per te mentre sviluppi Windows. Dovresti ancora testare e comprendere la natura multipiattaforma del tuo codice, ma se sai cosa stai facendo, non avresti davvero bisogno di sviluppare su Linux. (a metà di te, potresti fare il contrario e creare automaticamente i binari di Windows e fare tutto il tuo sviluppo su Linux). Raccomando Hudson per il server di build, davvero facile da configurare e da eseguire.

    
risposta data 25.07.2011 - 12:26
fonte
0

Potresti usare MinGW per ottenere gli stessi strumenti che usi nell'ambiente Linux / Unix nell'ambiente Windows. Puoi anche utilizzare cygwin su Windows per ottenere lo stesso risultato. Scriverei i miei makefile e usare gcc (ma sembra che non ti piaccia gcc). Non sono sicuro di una migliore alternativa gratuita a gcc. Personalmente, vorrei solo usare VIM o Emacs, GDB e usare questi strumenti in tutti gli ambienti (o imparare ad amare Code :: Blocks ).

L'idea con lo sviluppo di * nix e C è che l'intero ambiente è il tuo ambiente di sviluppo / sviluppo ... windows, non così tanto.

    
risposta data 07.02.2012 - 21:39
fonte

Leggi altre domande sui tag