私は Makefiles と autoconf を使用することに非常に慣れていません。Camellia イメージ ライブラリを使用しており、コードをそのライブラリに静的にリンクしようとしています。Camellia イメージ ライブラリで「make」を実行すると、/usr/local/lib ディレクトリ内に libCamellia.a、.so、.la、および .so.0.0.0 ファイルが作成されます。これは、ライブラリを使用してコードをコンパイルするために使用するコマンドです。
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 のソース コードを変更しようとしていて、自分のバージョンと彼らのバージョンを比較したいので、静的にリンクしたいと考えています。それで、グーグルで調べた後、 AM_DISABLE_SHARED をconfigure.inファイルに追加してみました。しかし、./configure を実行した後でも、まったく同じ Makefile が得られます。「make install」した後でも、上記と同じ結果が得られます。
オリジナルの Camellia ソース コードをコンパイルしたバージョンと、変更したバージョンのコードの 2 つのバージョンを取得する簡単な方法は何ですか? 静的ライブラリが機能するはずだと思います。静的ライブラリを機能させる簡単な方法はありますか、それとも私の問題に対する他の簡単な解決策はありますか? 自分のバージョンを元のバージョンと比較するたびに、「make」と「make install」を再実行したくありません。