単純なライブラリを作成しようとするのはこれが初めてです。g++ 4.6.3 を使用して Ubuntu 12.04 で作業しました。問題は次のとおりです。
[[mylib.cpp]]
#include<sqlite3.h>
void Mylib::blahblah() {...}
void Mylib::evenmoreblah() {...}
...
[[mylib.h]]
#include <...>
class Mylib {
...
};
次に、次の方法でライブラリを作成しました。
gcc -c -Wall -fpic mylib.cpp
gcc -shared -o libmylib.so mylib.o
main() のみを含む単一の test.cpp でライブラリを使用しました。libmylib.so を ./libdir に置き、以下を使用してコンパイルしました。
g++ -g test.cpp -o test -lpthread -L/usr/local/lib -lsqlite3 -L./libdir -lmylib
私が得たエラー:
./libdir/libmylib.so: undefined reference to `sqlite3_close'
./libdir/libmylib.so: undefined reference to `sqlite3_exec'
./libdir/libmylib.so: undefined reference to `sqlite3_free'
./libdir/libmylib.so: undefined reference to `sqlite3_open'