Je suis extrêmement novice en utilisant Makefiles et autoconf. J'utilise la bibliothèque d'images Camellia et j'essaie de lier statiquement mon code à leurs bibliothèques. Quand je lance "make" sur la bibliothèque d'images Camellia, j'obtiens les fichiers libCamellia.a, .so, .la, et .so.0.0.0 dans mon répertoire/usr/local/lib. Ceci est la commande que j'utilise pour compiler mon code avec leurs bibliothèques:configure.in: AM_DISABLE_SHARED ne change pas mon Makefile
gcc -L/usr/local/lib -lCamellia -o myprogram myprogram.c
Cela fonctionne très bien, mais lorsque je tente de lier statiquement, voici ce que je reçois:
gcc -static -L/usr/local/lib -lCamellia -o myprogram myprogram.c
/tmp/cck0pw70.o: In function `main':
myprogram.c:(.text+0x23): undefined reference to `camLoadPGM'
myprogram.c:(.text+0x55): undefined reference to `camAllocateImage'
myprogram.c:(.text+0x97): undefined reference to `camZoom2x'
myprogram.c:(.text+0x104): undefined reference to `camSavePGM'
collect2: ld returned 1 exit status
Je veux statiquement lien parce que j'essaie de modifier le code source de Camellia et je veux comparer ma version contre la leur. Donc, après quelques recherches, j'ai essayé d'ajouter AM_DISABLE_SHARED dans le fichier configure.in. Mais après avoir exécuté ./configure, j'obtiens toujours exactement le même Makefile. Après avoir "installé", j'ai toujours les mêmes résultats ci-dessus.
Quel est un moyen facile d'obtenir deux versions de mon code, l'une avec le code source original de Camellia compilé et l'autre avec ma version modifiée? Je pense que les bibliothèques statiques devraient fonctionner. Il existe un moyen facile de faire fonctionner les bibliothèques statiques ou existe-t-il d'autres solutions simples à mon problème? Je ne veux juste pas re-"faire" et re-"faire installer" chaque fois que je veux comparer ma version par rapport à l'original.
Pour les paquets qui utilisent libtool, c'est './configure --disable-shared', pas' --disable-dynamic'. –