libstuff.a
と を使用して、静的ライブラリ を作成しましgcc
たar
。ライブラリを/custom/lib/dir/
に、ヘッダー ファイルを にインストールしました/custom/include/dir/
。アーカイブに対して別のアプリケーションをコンパイルしようとすると、問題が発生します。
私がコンパイルしようとしているアプリケーションは、基本的にgcc -L/custom/lib/dir/ -I/custom/include/dir/ -lstuff
.
コンパイルしようとすると、 で宣言してstuff.h
で定義した関数に関するエラーが発生しますstuff.c
。
main.c:51: undefined reference to `stuff_init'
collect2: error: ld returned 1 exit status
libstuff.a
コンパイラから削除すると/custom/lib/dir/
、苦情が発生し/usr/bin/ld: cannot find -lstuff
ます。私がそれを元に戻せば、それは文句を言いません。したがって、アーカイブを正しく見つけています。
#include "stuff.h"
gccからコード行を削除すると、未定義であるとmain.c
不平を言うstuff_init
ので、ヘッダーを正しく見つけています。
を実行するnm libstuff.a
と、出力に0000000000000000 T stuff_init
. したがって、関数はアーカイブ ファイルで定義されます。
それで、私は何を間違っていますか?