[Risolto] studiare C++ in fedora

Mi sono deciso a studiare il linguaggio C++.
Per fare ciò mi sto appoggiando per i primi passi su http://www.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/01Indice.html#IOstd, mentre per esercitarmi ho trovato http://www.devlabs.altervista.org/C++/esercizi/Esercizi.htm
Complessivamente sono soddisfatto, ma ho notato che gli esercizi puntano sull’ambiente windows, mentre a me servirebbero esercitazioni rivolte a linux.
Quello che ho appena detto sembrerebbe insignificante, ma così non é. Infatti le soluzioni svolte contengono riferimenti o richiami di librerie che non sono sempre replicate per Linux, come, per es. conio.h.
Da due giorni sono fermo ad un’esercitazione che richiama conio.h per potere pulire la console (clrscr()) e per aspettare la pressione di un tasto da parte dell’utente (getch():wink: pr ima di continuare a scorrere le istruzioni successive.
Visto che per linux conio.h non esiste, ho provato, seguendo indicazioni in rete, ad usare curses.h e ncurses.h, ma senza riuscire a completare la compilazione del programmino. Ho installato “strumenti di sistema” e poi curses.h, ma non è cambiato niente.
Non sapendo più come potere andare avanti, ho anche tentato di comandare la pulizia della console con printf("\X1B2J"). Nemmeno detta prova ha funzionato.
Mi trovo così bloccato con un’esercitazione che non riesco assolutamente a compilare. Ecco perché sto cercando un altro riferimento per esercitarmi con strumenti pensati per Linux. É possibile?
Grazie per l’eventuale risposta.

Il tuo problema è che non hai installato i pacchetti giusti. Il compilatore giusto lo trovi sotto gcc-c++. Le librerie e i files headers sono tutti i pacchetti con l’estensione -devel, esempio: commoncpp2 ha come pacchetto per lo svilupo commoncpp2-devel. Infine l’IDE per lo sviluppo. Quale? Hai da scegliere tra: KDevelop, Qt Creator, MonkeyStudio, QDevelop, Anjiuta, CodeBlock, CodeLite, Eclipse.

Secondo me questa decisione è prematura; per i primi passi conviene utilizzare un semplice editor di testo (magari configurato con syntax highlightning, numeri di righe e poco altro) e un emulatore di terminale. Poi… Per passare ad un IDE è un attimo, ma per gli inizi rappresenta un ambiente troppo complesso che disorienta e non aiuta.

Non nascondo le mie limitazioni in materia di pacchetti installati. Ho eseguito Yum list e fra i pacchetti installati ho trovato:

[quote]gcc-c++.x86_64 4.7.2-8.fc18 @fedora
ncurses.x86_64 5.9-11.20130511.fc18 @updates
ncurses-base.noarch 5.9-11.20130511.fc18 @updates
ncurses-libs.x86_64 5.9-11.20130511.fc18 @updates
[/quote]

Premesso ciò, quando eseguo il comando di compilazione dell’esecitazione di turno, scrivo:

$  c++ Ese_somma_potenza.cpp -o Ese_somma_potenza

Nel programma di esercitazione richiamo la libreria ncurses così:

#include <ncurses.h>

oppure così:

#include <ncurses>

Ebbene, in entrambi i casi, l’avvio della compilazione produce il seguente “fatl error”:

$ c++ Ese_somma_potenza.cpp -o Ese_somma_potenza Ese_somma_potenza.cpp:7:81: fatal error: ncurses: File o directory non esistente compilation terminated.

Dalle tue indicazioni non ho capito dove sbaglio. Potresti essere più chiaro?
Grazie.

Mancano i files headers e le librerie di collegamento ad ncurses. Quindi devi installare da Apper o con yum da linea di comando il pacchetto ncurses-devel.

In casi analoghi, può aiutare uno

$ yum provides *ncurses.h

Nel caso in questione, ottieni un certo latrace e, appunto, ncurses-devel:e dalla descrizione di quest’ultimo (Development files for the ncurses library) si intuisce probabilmente che il pacchetto che ti interessa è quello.

Secondo me questa decisione è prematura; per i primi passi conviene utilizzare un semplice editor di testo (magari configurato con syntax highlightning, numeri di righe e poco altro) e un emulatore di terminale. Poi… Per passare ad un IDE è un attimo, ma per gli inizi rappresenta un ambiente troppo complesso che disorienta e non aiuta.[/quote]
Scusa arkanoid, ma ho letto solo ora la tua risposta e sono d’accordo con te. Infatti, in questa prima fase, utilizzo semplicemente gedit.

[quote=marcomotta]In casi analoghi, può aiutare uno

$ yum provides *ncurses.h

Nel caso in questione, ottieni un certo latrace e, appunto, ncurses-devel:e dalla descrizione di quest’ultimo (Development files for the ncurses library) si intuisce probabilmente che il pacchetto che ti interessa è quello.[/quote]

Fatto:

# yum provides *ncurses.h
Plugin abilitati:langpacks, presto, refresh-packagekit
adobe-linux-x86_64                                       |  951 B     00:00     
google-chrome                                            |  951 B     00:00     
rpmfusion-free-updates                                   | 3.3 kB     00:00     
rpmfusion-nonfree-updates                                | 3.3 kB     00:00     
updates/18/x86_64/metalink                               | 3.6 kB     00:00     
latrace-0.5.11-2.fc18.i686 : LD_AUDIT feature frontend for glibc 2.4+
Repo         : fedora
Corrispondenza trovata in:
Nome file   : /etc/latrace.d/headers/ncurses.h



latrace-0.5.11-2.fc18.x86_64 : LD_AUDIT feature frontend for glibc 2.4+
Repo         : fedora
Corrispondenza trovata in:
Nome file   : /etc/latrace.d/headers/ncurses.h



ncurses-devel-5.9-7.20121017.fc18.i686 : Development files for the ncurses
                                       : library
Repo         : fedora
Corrispondenza trovata in:
Nome file   : /usr/include/ncursesw/ncurses.h
Nome file   : /usr/include/ncurses.h
Nome file   : /usr/include/ncurses/ncurses.h



ncurses-devel-5.9-7.20121017.fc18.x86_64 : Development files for the ncurses
                                         : library
Repo         : fedora
Corrispondenza trovata in:
Nome file   : /usr/include/ncursesw/ncurses.h
Nome file   : /usr/include/ncurses.h
Nome file   : /usr/include/ncurses/ncurses.h



ncurses-devel-5.9-11.20130511.fc18.i686 : Development files for the ncurses
                                        : library
Repo         : updates
Corrispondenza trovata in:
Nome file   : /usr/include/ncursesw/ncurses.h
Nome file   : /usr/include/ncurses.h
Nome file   : /usr/include/ncurses/ncurses.h



ncurses-devel-5.9-11.20130511.fc18.x86_64 : Development files for the ncurses
                                          : library
Repo         : updates
Corrispondenza trovata in:
Nome file   : /usr/include/ncursesw/ncurses.h
Nome file   : /usr/include/ncurses.h
Nome file   : /usr/include/ncurses/ncurses.h

Tuttavia, la procedura di compilazione finisce sempre con

$ c++ Ese_somma_potenza.cpp -o Ese_somma_potenza Ese_somma_potenza.cpp:7:83: fatal error: ncurses.h: File o directory non esistente
:gratt:

Ho dato una letta piuttosto veloce ma credo che ci sia stato un equivoco, il comando$ yum provides *ncurses.h serve per individuare quale pacchetto provvede (provides) a fornire un file.

Una volta individuato il pacchetto lo si può installare con il comando (nel tuo caso)# yum install ncurses-devel

:wall:
Finalmente ho capito.
Ho potuto installare ncurses ed ho potuto portare a termine la prima compilazione. Ora posso continuare con la correzione degli errori riscontrati e continuare con le prove.
Grazie a tutti.
Ciao.