Я чрезвычайно новичок в использовании Makefiles и autoconf. Я использую библиотеку изображений Camellia и пытаюсь статически связать мой код с их библиотеками. Когда я запускаю «make» в библиотеке изображений Camellia, я получаю файлы libCamellia.a, .so, .la и .so.0.0.0 в моем каталоге / usr / local / lib. Это команда, которую я использую для компиляции моего кода с их библиотеками:
gcc -L/usr/local/lib -lCamellia -o myprogram myprogram.c
Это работает нормально, но когда я пытаюсь статически связать, это то, что я получаю:
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
Я хочу статически связать, потому что я пытаюсь изменить исходный код Camellia и сравнить свою версию с их версией. Поэтому после некоторого поиска в Google я попытался добавить AM_DISABLE_SHARED в файл configure.in. Но после запуска ./configure я все равно получаю тот же Makefile. После того, как я «сделал установку», я все еще получаю те же результаты, что и выше.
Какой простой способ получить две версии моего кода, одну с скомпилированным исходным исходным кодом Camellia и одну с моей модифицированной версией? Я думаю, что статические библиотеки должны работать. Есть простой способ заставить статические библиотеки работать или есть другие простые решения моей проблемы? Я просто не хочу заново «делать» и «делать установку» каждый раз, когда я хочу сравнить свою версию с оригиналом.