Come si compila di solito il codice sorgente C / C ++? (Basi di codici di grandi dimensioni) [chiuso]

4

Sono passate diverse volte da quando ho iniziato ad imparare C e C ++ ma sono stato molto limitato solo alla piattaforma Windows e all'ambiente Visual Studio. Recentemente, volevo esaminare alcuni progetti C / C ++ open source, quindi ne ho scaricati alcuni ma ero frustrato perché non sapevo come compilare quei software. Poi ho dovuto conoscere tutte quelle g++ e make roba e ancora ho solo una conoscenza molto limitata in questi argomenti.

Essendo stato abituato a un ambiente come Visual Studio, in cui è possibile scrivere il codice, premere il pulsante play e boom sei pronto, per me è stato difficile compilare un programma con la riga di comando all'inizio.

Quindi la mia domanda è, se sei uno sviluppatore C / C ++, come si compila il codice? Come si compilano basi di codice relativamente grandi? Quali sono gli strumenti che usi? Usi IDE o semplicemente editor di testo? Qual è il compilatore che usi? Costruisci le tue applicazioni dalla riga di comando? Qual è il sistema operativo su cui di solito viene compilato?

SideNote: La mia conoscenza di linux è zero.

    
posta David Sebastian 14.02.2015 - 19:43
fonte

2 risposte

15

Almeno per software libero su Linux, di solito usi qualche builder come make . Potresti utilizzare qualche altro programma builder , come scons o omake

Per alcuni motivi (per lo più storici), Makefile può essere generato da programmi di utilità come autoconf o cmake ; questi generatori si occupano anche di problemi di configurazione (ad esempio disabilitano alcune funzionalità del software se manca una dipendenza). Alcuni framework forniscono anche i propri generatori di Makefile , ad es. qmake per Qt

PS. Il recente GNU make 4 ha molte nuove funzionalità (plug-in e scripting di guile) che valgono la pena (e probabilmente potrebbero rimuovere IMHO) la necessità di generare Makefile -s).

Quando si costruisce una grande base di codice C ++, consiglio di usare le utilità della riga di comando (in particolare make ), perché si capisce di più cosa sta realmente accadendo. Inoltre, un sacco di grandi basi di codice C ++ a volte usano generatori di codice C ++ specializzati (ad esempio il compilatore GCC ne ha una dozzina, interni a esso). Ci sono buone ragioni per generare a volte qualche codice C ++ (magari con un semplice awk o python ), ad es alcune intestazioni o costanti, ecc.

Per costruire molti GNU o altre basi di software libero di grandi dimensioni, almeno su Linux, generalmente non è necessario comprendere tutti i dettagli del proprio edificio. Di solito, un file di testo README o INSTALL spiega come farlo, ed è spesso -per software usando autoconf - (ma non sempre) semplice come eseguire i tre comandi

 ./configure
 make
 sudo make install

Potresti preferire eseguire make install DESTDIR=/tmp/installdir/ , quindi copiare /tmp/installdir con ad es. sudo cp -va /tmp/installdir/ /

Per il software che utilizza cmake , costruirli è spesso semplice come

mkdir build 
cd build
cmake ..
make
sudo make install

Anche il pkg-config è un'utilità utile, dato che fornisce i flag di compilazione e linking utile con alcuni pacchetti.

Il software di grandi dimensioni potrebbe essere difficile da costruire a causa del dannoso accesso alle dipendenze (che è un problema per ogni software di grandi dimensioni, in qualsiasi sistema operativo). Le distribuzioni Linux sono fatte per gestirle.

Immagino che questi software gratuiti siano spesso più facili da costruire su Linux che su Windows (che non conosco e non utilizzo mai). A proposito, ti consiglio vivamente di installare Linux e impararlo, perché è divertente e fatto di software gratuito (il cui codice sorgente è possibile studiare, migliorare e contribuire a).

Software gratuito di grandi dimensioni o di base come il compilatore GCC , GNU glibc , il kernel kernel è difficile da compilare (perché quasi tutto dipende da loro). Quindi inizia a creare alcuni software gratuiti più semplici dal codice sorgente. Vedi sourceforge o github per trovarne.

Alcune lingue o framework hanno il proprio programma di installazione o gestore di pacchetti o builder. Ad esempio, ocaml ha OPAM

BTW, nota che tutti IDE (compresi Visual Studio su Windows) sono solo editori con qualche interfaccia grafica per eseguire il compilatore C ++ sulla riga di comando. Quindi è meglio capire cosa sta realmente accadendo, sapendo come eseguire il compilatore attraverso i comandi.

    
risposta data 14.02.2015 - 19:47
fonte
0

La mia esperienza è che oltre ad avere un Makefile (o qualche volta c: :-(), varia in base ai gusti personali dell'individuo Personalmente, io uso un editor che viene eseguito dalla riga di comando (xterm) e ho un editor macro (creati nell'arco di un paio di decenni) che imitano più o meno molte delle caratteristiche di un IDE senza il bagaglio: ad esempio, una pressione di un tasto esegue make (dopo aver salvato tutti i file aperti), scarica l'output in un file che vedo in l'editor, poi un altro tasto su una riga di errore mi porta alla riga di origine nella sorgente (e questo funziona per altre cose, come i documenti LaTeX.) Altre persone amano usare vi (m), emacs o altri strumenti.

Il nucleo comune è che quasi tutto ciò che ho visto si basa su un Makefile. Se il progetto è destinato alla distribuzione estesa, questo può essere generato dagli strumenti di autoconf. (O cmake & c.) Tuttavia, se ti piacciono gli IDE, Wikipedia ha una lunga lista che funziona in Linux: link Non ho esperienza con nessuno di loro, a parte un breve (e spiacevole) stint con Eclipse - e che alcuni anni fa, quindi, potrebbe essere migliorato.

    
risposta data 15.02.2015 - 06:33
fonte

Leggi altre domande sui tag