我想要得到一个基本的“hello world”sqlite3程序进入cygwin。我最初从setup.exe安装它,但是当我运行程序时,出现链接器错误,例如“对_sqlite3_open'的未定义引用”。 I编译时使用-lsqlite3开关。cygwin SQLite3导致链接器错误
的位置是在这里:
$ ls /usr/lib/ | grep sql
libsqlite3.a
libsqlite3.dll.a
libsqlite3.la
然后我试图下载sqlite3的源和手动编译它,但我得到了同样的错误。它安装到/ usr/local/lib目录
$ ls /usr/local/lib/ | grep sql
libsqlite3.a
libsqlite3.dll.a
libsqlite3.la
我还是让这些链接器错误,虽然,我似乎无法弄清楚如何解决它?
$ gcc -lsqlite3 test.cc
test.cc: In function ‘int main()’:
test.cc:41: warning: deprecated conversion from string constant to ‘char*’
/tmp/ccKA3ZFa.o:test.cc:(.text+0x2d): undefined reference to `_sqlite3_open'
/tmp/ccKA3ZFa.o:test.cc:(.text+0x41): undefined reference to `_sqlite3_errmsg'
/tmp/ccKA3ZFa.o:test.cc:(.text+0xb6): undefined reference to `_sqlite3_prepare_v2'
/tmp/ccKA3ZFa.o:test.cc:(.text+0xca): undefined reference to `_sqlite3_errmsg'
/tmp/ccKA3ZFa.o:test.cc:(.text+0x10e): undefined reference to `_sqlite3_step'
/tmp/ccKA3ZFa.o:test.cc:(.text+0x12a): undefined reference to `_sqlite3_column_bytes'
/tmp/ccKA3ZFa.o:test.cc:(.text+0x140): undefined reference to `_sqlite3_column_text'
/tmp/ccKA3ZFa.o:test.cc:(.eh_frame+0x11): undefined reference to `___gxx_personality_v0'
collect2: ld returned 1 exit status
感谢您的帮助,您可以提供。干杯:)
Derp,它似乎是放置。也许这是一个cygwin的东西?我似乎没有记得之前有一个安置问题:)谢谢!我试图弄清楚为什么它没有连接哈哈。 (是的,你是对的,这是一个C++程序,只是一个错字) – Jordan 2011-04-20 02:33:05
@Jordan,我不认为它只限于CygWin。完全相同的文本出现在我的Ubuntu 10.04盒子的手册页中。我想这可能是因为它是CygWin下的gcc3,但是Ubuntu中的gcc3也是gcc4。我在_many_系统上曾经遇到过这个问题_many_次,所以我认为这很常见。我们甚至曾经引入了一个kludge来修改库列表以摆脱这个问题 - 它包括复制列表的次数与列表中的单个库相同:所以'-la'或'-la -lb -la - Ib'或'-la -lb -lc -la -lb -lc -la -lb -lc'等等。 – paxdiablo 2011-04-20 02:38:55