FreeBSD 9.1, Mariadb55, and strfill()

Please give me a hint.

Under FreeBSD my application cannot find strfill(). It can be found in libmysqlclient.a and libmysqlclient_r.a but NOT in the shared library libmysqlclient.so. Oddly, strcend() can be found in all of those libraries but I cannot find a difference in CMake between the two.

Answer

strfill() is not part of the client-server API, so it's not explicitly added to the list of exported symbols of libmysqlclient.so.

If you check libmysql/CMakeLists.txt of the latest 5.5 you'll see that we do export strfill on Ubuntu, because de-facto libmyodbc on Ubuntu needs it. But otherwise we don't export it, and the linker removes this unused symbol when building the dynamic library.

strcend() is different. It's not explicitly exported (even on Ubuntu), but it is used by the libmysqlclient.so itself, internally, so the linker cannot remove it.

Comments

Comments loading...
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.