Easysoft Data Access

Why do I get error "libodbc.so.1: open failed: No such file or directory"?

Article:
01004
Last Reviewed:
4th January 2024
Revision:
2

The dynamic linker needs to know where to find the ODBC Driver Manager shared object, the ODBC driver shared object, and any shared objects required by the ODBC driver. If the dynamic linker cannot find these shared objects, you will get errors similar to:

ld.so.1: /usr/local/easysoft/unixODBC/bin/isql: fatal: libodbc.so.1: open failed: No such file or directory

For Easysoft ODBC drivers, you need to tell the dynamic linker where to find the unixODBC shared object, the ODBC driver shared object and any common Easysoft shared objects the ODBC driver is dependent on. The shared object for the unixODBC driver manager that ships with the Easysoft ODBC driver is in install_path/easysoft/unixODBC/lib, where install_path is the Easysoft installation path, by default /usr/local. The common Easysoft shared objects are in install_path/easysoft/lib. The directory where the Easysoft ODBC driver shared object is located varies. For example, the SQL Server ODBC driver shared object is in install_path/easysoft/sqlserver; the Oracle ODBC driver (OCI version) shared object is in install_path/easysoft/oracle; the ODBC-ODBC Bridge client ODBC driver is in install_path/easysoft/oob/client. For other ODBC drivers, refer to the Easysoft ODBC driver documentation.

To add these shared object directories to the dynamic linker search path, either set and export the LD_LIBRARY_PATH environment variable or use the crle command.

A Bourne shell example of setting LD_LIBRARY_PATH for the SQL Server ODBC driver is:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/easysoft/lib:/usr/local/easysoft/unixODBC/lib:/usr/local/easysoft/sqlserver
export LD_LIBRARY_PATH

The crle command creates or updates a runtime linking configuration file. The file defines the locations where the dynamic linker looks for shared objects. For example, to update the configuration file for the SQL Server ODBC driver, as root, run:

crle -u -l /usr/local/easysoft/lib:/usr/local/easysoft/unixODBC/lib:/usr/local/easysoft/sqlserver

Important You must include -u in this command, which appends these directories to the existing search path.

See Also

Applies To

Knowledge Base Feedback

* Did this content help you?
* Please select one option based on your first choice:

(* Required Fields)