2013-08-09 9 views
20

sto cercando di compilare software su Blue Gene Q utilizzando i compilatori IBM XL e ho ottenuto questo messaggio di errore:errore di compilazione - manca zlib.h

"iostreams/zlib.cpp", line 19.10: 1540-0836 (S) The #include file "zlib.h" is not found. 
make[3]: *** [zlib.o] Error 1 

Ho installato una nuova versione di zlib e aggiornata con LD_LIBRARY_PATH$HOME/zlib/include

Mi manca qualcosa?

risposta

7

Manca il per includere il percorso dove sono stati inseriti i file di intestazione di zlib. L'impostazione della variabile di ambiente LD_LIBRARY_PATH è per il collegamento dinamico di oggetti condivisi (DLL, ovvero i file che terminano con .so).

La maggior parte dei compilatori ha un'opzione -I per aggiungere percorsi di inclusione alla ricerca. E probabilmente vuoi usare -L per dire al compilatore dove trovare la libreria con cui collegarti, e usare -l per dire al compilatore di collegarsi a zlib.

E.g.

$ c++ -I$HOME/zlib/include some_file.cpp -L$HOME/zlib/lib -lz 
+2

Sbagliato. La risposta di kernob è corretta. – SmallChess

+1

@SmallChess Considerando che l'OP dice "Ho installato *** una nuova versione di zlib ..." (sottolineatura mia) e ha contrassegnato la mia risposta come accettata, forse puoi approfondire il motivo? Solo perché una risposta ha più voti non significa che sia automaticamente corretta. –

+1

Mi sento come se la maggior parte delle persone che hanno votato la risposta di Kernob, non abbia letto completamente la domanda. – searchengine27

64

Ti manca zlib.h file di intestazione, su Linux installarlo tramite:

sudo apt-get install libz-dev 

su Fedora: sudo dnf install libz-devel

Ciò fornirà i file di supporto di sviluppo per una libreria che implementa il metodo di compressione deflate trovato in gzip e PKZIP.

Se hai già la libreria zlib, assicurati di compilare le sorgenti del codice con -lz. Vedi: How to fix undefined references to inflate/deflate functions?.

+2

Ho avuto lo stesso problema con fedora 25. La soluzione è 'sudo dnf installa libz-devel' –