Je suis un C noob, donc c'est peut-être une question stupide. J'essaie de compiler un fichier .so (bibliothèque partagée, si ma terminologie est correcte) des objets C (fichiers .o), dans le but exprès de les importer en Python via ctypes
. J'ai d'abord compilé le * .so avecImpossible de trouver -llibc
gcc -shared -o libvARAM.so ARAM.o ARAM_io.o io.o pre.o rule.o stat.o ART.o vARAM.o
Cela a fonctionné, sauf que lorsque j'ai essayé de charger via ctypes j'ai été récompensé avec:
OSError: ./libvARAM.so: undefined symbol: max
Après quelques recherches, je me suis aperçu que max est pas une norme Fonction C Appeler ldd libvARAM.so
m'a informé que l'une des dépendances est libc.so.6
. J'ai créé un lien symbolique libc.so
-libc.so.6
puis essayé de recompiler mon .donc comme
gcc -shared -o libvARAM.so ARAM.o ARAM_io.o io.o pre.o rule.o stat.o ART.o vARAM.o -llibc
qui a généré
/usr/bin/ld: cannot find -llibc
La même erreur est générée si j'essaie aussi -L/lib/i386-linux-gnu/ -llibc
. Je suis au courant de thread this, mais pense que ce n'est pas pertinent à ma situation, car la solution est là pour un fichier makefile. J'utilise Xubuntu si cela est important.
Toute aide est sincèrement appréciée!
Lors de la compilation de certains logiciels GNU, la bibliothèque de portabilité incluse (compilée) est 'libiberty.a'. Ceci est inclus dans la compilation avec l'option '-liberty', bien sûr. (Triste qu'ils soustraient la liberté, mais c'est la convention pour les options, bien sûr.) –