MYSQL Installation Error – Problems Linking to the MySQL Client Library

SQLServerF1

When you are linking an application program to use the MySQL client library, you might get undefined reference errors for symbols that start with mysql_, such as those shown here:

/tmp/ccFKsdPa.o: In function `main’:
/tmp/ccFKsdPa.o(.text+0xb): undefined reference to `mysql_init’
/tmp/ccFKsdPa.o(.text+0x31): undefined reference to `mysql_real_connect’
/tmp/ccFKsdPa.o(.text+0x57): undefined reference to `mysql_real_connect’
/tmp/ccFKsdPa.o(.text+0x69): undefined reference to `mysql_error’
/tmp/ccFKsdPa.o(.text+0x9a): undefined reference to `mysql_close’
You should be able to solve this problem by adding -Ldir_path -lmysqlclient at the end of your link command, where dir_path represents the path name of the directory where the client library is located. To determine the correct directory, try this command:

shell> mysql_config –libs
The output from mysql_config might indicate other libraries that should be specified on the link command as well.

If you get undefined reference errors for the uncompress or compress function, add -lz to the end of your link command and try again.

If you get undefined reference errors for a function that should exist on your system, such as connect, check the manual page for the function in question to determine which libraries you should add to the link command.

You might get undefined reference errors such as the following for functions that don’t exist on your system:

mf_format.o(.text+0x201): undefined reference to `__lxstat’
This usually means that your MySQL client library was compiled on a system that is not 100% compatible with yours. In this case, you should download the latest MySQL source distribution and compile MySQL yourself. “Installing MySQL from a Source Distribution”.

You might get undefined reference errors at runtime when you try to execute a MySQL program. If these errors specify symbols that start with mysql_ or indicate that the mysqlclient library can’t be found, it means that your system can’t find the shared libmysqlclient.so library. The fix for this is to tell your system to search for shared libraries where the library is located. Use whichever of the following methods is appropriate for your system:

Add the path to the directory where libmysqlclient.so is located to the LD_LIBRARY_PATH environment variable.

Add the path to the directory where libmysqlclient.so is located to the LD_LIBRARY environment variable.

Copy libmysqlclient.so to some directory that is searched by your system, such as /lib, and update the shared library information by executing ldconfig.

Another way to solve this problem is by linking your program statically with the -static option, or by removing the dynamic MySQL libraries before linking your code. Before trying the second method, you should be sure that no other programs are using the dynamic libraries.

What are MYSQL Errors?

MySQL programs have access to several types of error information when the server returns an error.

The MYSQL message displayed contains three types of information:
A numeric error code. This number is MySQL-specific and is not portable to other database systems.
A five-character SQLSTATE value. The values are specified by ANSI SQL and ODBC and are more standardized. Not all MySQL error numbers are mapped to SQLSTATE error codes.
A message string that provides a textual description of the error.
When an error occurs, you can access the MySQL error code, the SQLSTATE value, and the message string using C API functions:
MySQL error code: Call mysql_errno()
SQLSTATE value: Call mysql_sqlstate()
Error message: Call mysql_error()

Hope this was helpful.

Thanks,
SQLServerF1 Team
Information about MYSQL Error Codes and Error Messages or Warnings on Windows, Linux Operating Systems.

 

Leave a Reply

Your email address will not be published. Required fields are marked *