スタティック ライブラリを作成したいのですが、yolinux チュートリアル http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.htmlに従って適切に作成できました。
この問題は、新しい静的ライブラリを作成するために静的ライブラリを含めたいときに発生します。シナリオは次のとおりです。
gcc -Wall -c cdbSearch.c
ar -cvq cdbSrc.a cdbSearch.o cdb.a
これにより、cdbSrc.a という名前のスタティック ライブラリが正常に作成されます。
しかし、これをテストプログラムとリンクしようとすると
gcc -o cdbtest cdbtest.c cdbSrc.a
cdbSrc.a(cdbSearch.o): In function `cdb_search':
cdbSearch.c:(.text+0xa2): undefined reference to `cdb_seek'
collect2: ld returned 1 exit status
実際にはcdb.aの一部であるcdb_seekを参照できないというエラーが表示されます
テストプログラムをcdb.aでコンパイルすると、正常に動作しますが、目的を果たしません..
gcc -o cdbtest cdbtest.c cdbSrc.a cdb.a
バイナリが cdbtest に正常に作成されます。
これは意図された動作ですか?はい、なぜですか?? そうでない場合、私は何が間違っているのですか..