Bonjour, J'essaie d'installer une nouvelle version de zlib, et je n'ai pas de droits root, donc je vais l'installer localement. Système d'installation est 1.2.3, et je suis en train d'utiliser 1.2.5liaison avec la version "locale" d'une bibliothèque
Je compile comme
g++ -g myProg.cpp myOs.o -lpthread -IzlibInc/ -LzlibLib/ -lz -o myProg
utilisant ldd il dit
ldd myProg
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003c15800000)
libz.so.1 => /usr/lib64/libz.so.1 (0x0000003c15c00000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003c17400000)
libm.so.6 => /lib64/libm.so.6 (0x0000003c15400000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003c17000000)
libc.so.6 => /lib64/libc.so.6 (0x0000003c14c00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003c14800000)
donc il ne marche pas correctement lien.
Merci
/////////////////////////////////////////////
mise à jour
J'ai 2 dossiers appelés zlibInc et zlibLib containint les en-têtes et les fichiers objet partagé.
ls zlibLib/
libz.a libz.so libz.so.1 libz.so.1.2.5 pkgconfig
ls zlibInc/
zconf.h zlib.h
mon code source est
cat zlibTest.cpp
#include <cstdio>
#include <zlib.h>
int main(){
fprintf(stderr,"%s\n",ZLIB_VERSION);
int *a=new int[10];
gzread(stdin,a,5);
return 0;
}
Et ma ligne de commande pour la compilation est
g++ zlibTest.cpp -I zlibInc/ -L zlibLib/ -L . -I . -lz;ldd a.out
libz.so.1 => /usr/lib64/libz.so.1 (0x0000003c15c00000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003c17400000)
libm.so.6 => /lib64/libm.so.6 (0x0000003c15400000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003c17000000)
libc.so.6 => /lib64/libc.so.6 (0x0000003c14c00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003c14800000)
Et si vous mettez '-lz' en premier? En outre, vous pouvez dire '-pthread' en tant qu'option de compilateur, vous n'avez donc pas besoin de lier cela manuellement. –