problema compilazione anjuta

6 risposte [Ultimo contenuto]
Ritratto di Architect
Architect
(Junior)
Offline
Junior
Iscritto: 17/09/2017
Messaggi: 11

Ciao volevo iniziare a programmare in c++ su linux ma quando vado a compilare il mio progetto anjuta mi dà questo messaggio di errore

Building in directory: /root/hello/Debug
make
make  all-recursive
make[1]: ingresso nella directory "/root/hello/Debug"
Making all in src
make[2]: ingresso nella directory "/root/hello/Debug/src"
CXX      main.o
/root/hello/src/main.cc:1:10: fatal error: libxl: File o directory non esistente
#include <libxl>
^~~~~~~
compilation terminated.
make[2]: *** [main.o] Errore 1
/root/hello/Debug/Makefile:439: set di istruzioni per l'obiettivo "main.o" non riuscito
make[2]: uscita dalla directory "/root/hello/Debug/src"
/root/hello/Debug/Makefile:497: set di istruzioni per l'obiettivo "all-recursive" non riuscito
make[1]: *** [all-recursive] Errore 1
make[1]: uscita dalla directory "/root/hello/Debug"
/root/hello/Debug/Makefile:408: set di istruzioni per l'obiettivo "all" non riuscito
make: *** [all] Errore 2
Completed unsuccessfully
Total time taken: 0 secs

il programma è questo

#include <libxl>
#include <iostream>
 
using namespace std;
 
int main(){
 
 
	cout << "Hello World" << endl;
 
	return 0;
 
 
 
}

mi potete aiutare?

Ritratto di badroot
badroot
(Guru)
Offline
Guru
Iscritto: 22/08/2008
Messaggi: 1966

Ciao,
l'errore è abbastanza evidente, hai indicato nella direttiva include il file libxl che non è presente sul tuo sistema, oppure non è nel percorso standard /usr/include.

Se supponiamo che questo file libxl sia nella directory /home/pippo/include devi usare l'opzione -I ( i maiuscola ) di g++, in questo modo :

g++ -I/home/pippo/include -o hello hello.cpp

Se poi questo file libxl fa anche riferimento ad una libreria specifica il comando di compilazione dovrebbe essere qualcosa del tipo :

g++ -I/home/pippo/include -L/home/pippo/lib -o hello hello.cpp -lxl

dove -L dice al compilatore dove cercare le librerie, oltre che in /usr/lib, e -lxl indica di collegare l'object al file libxl.
Tutto questo come discorso generale sulla compilazione in c/c++, che è ovviamente argomento molto più vasto e complesso di come lo ho banalmente semplificato.

Io non conosco questo IDE ma in ogni modo devi potergli dire dove andare a cercare i file include se non sono nella directory standard.

Ritratto di Architect
Architect
(Junior)
Offline
Junior
Iscritto: 17/09/2017
Messaggi: 11

ho controllato il file libxl era gia' presente nella cartella include ma anjuta non lo trova te sai come fare?

Ritratto di badroot
badroot
(Guru)
Offline
Guru
Iscritto: 22/08/2008
Messaggi: 1966

Sicuro che ci sia ? Controlla bene, maiuscole / minuscole, eventuale estensione del file.
Guarda anche esattamente dove si trova, per esempio se :

/usr/include/libxl/libxl

nel programma devi specificare :

#include <libxl/libxl>

Non conosco Anjuta, ma immagino che se non lo trova è perchè non c'è Wink
Prova a compilare da linea di comando e vedi se ti da lo stesso errore.

Ritratto di Architect
Architect
(Junior)
Offline
Junior
Iscritto: 17/09/2017
Messaggi: 11

Grazie per avermi fatto ragionare.

I file c'erano ma erano dentro altre cartelle dentro include li ho copiati tutti direttamente in include e ho risolto.

Grazie, questo si cazzo che e' un forum con le palle.

Ritratto di badroot
badroot
(Guru)
Offline
Guru
Iscritto: 22/08/2008
Messaggi: 1966

Architect ha scritto:

I file c'erano ma erano dentro altre cartelle dentro include li ho copiati tutti direttamente in include e ho risolto.

Però hai risolto nel modo sbagliato, almeno stando a quello che capisco da ciò che hai scritto.
Se in futuro c'è un aggiornamento di questo pacchetto libxl tu continuerai ad usare i vecchi file che hai copiato a mano.
La cosa migliore è referenziare la path corretta nella direttiva include.

Quindi se ho il file xyz.h nella directory /usr/include/vattelapesca devo indicare nel sorgente :

#include <vattelapesca/xyz.h>

moltissime librerie installano i relativi file di include in una directory specifica sotto /usr/include.

PS : per curiosità da quale pacchetto arrivano questi files, su stretch non trovo nessuna libreria libxl.

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2769

Il pacchetto libxen-dev installa un file libxl.h proprio in /usr/include.