So I get this error when compiling a program with mysql++ under Ubuntu 12.04 LTS x64 with GCC. In detail its:

/usr/lib/i386-linux-gnu/libmysqlclient.a(client_plugin.c.o): In function add_plugin:
(.text+0x253): undefined reference to dlclose
/usr/lib/i386-linux-gnu/libmysqlclient.a(client_plugin.c.o): In function mysql_client_plugin_deinit:
(.text+0x2c7): undefined reference to dlclose
/usr/lib/i386-linux-gnu/libmysqlclient.a(client_plugin.c.o): In function mysql_load_plugin_v:
(.text+0x524): undefined reference to dlopen
/usr/lib/i386-linux-gnu/libmysqlclient.a(client_plugin.c.o): In function mysql_load_plugin_v:
(.text+0x54a): undefined reference to dlsym
/usr/lib/i386-linux-gnu/libmysqlclient.a(client_plugin.c.o): In function mysql_load_plugin_v:
(.text+0x67f): undefined reference to dlerror
/usr/lib/i386-linux-gnu/libmysqlclient.a(client_plugin.c.o): In function mysql_load_plugin_v:
(.text+0x695): undefined reference to dlclose

I have installed: libmysql++-3, libmysqlclient18 and libmysqlclient18-dev, libdml3 and libdml3-dev Libraries are linked in the following order:

/usr/lib/libmysqlpp.a
/usr/lib/i386-linux-gnu/libdl.a
/usr/lib/i386-linux-gnu/libmysqlclient.a

And as linker include directories I have:

/usr/lib
/usr/lib/i386-linux-gnu
有帮助吗?

解决方案

Making the comment into an answer. so that it doesn't get lost:

You have to link -ldl only after -lmysqlclient. The link order matters.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top