Operating System - HP-UX
1753326 Members
4943 Online
108792 Solutions
New Discussion юеВ

/usr/lib/hpux64/dld.so: Unable to find library 'libodbc.so.1'.

 
SOLVED
Go to solution
MissX
Advisor

/usr/lib/hpux64/dld.so: Unable to find library 'libodbc.so.1'.

Greetings. Currently, I'm facing problem in trying to install MySQL Connector ODBC. This is what I do to install the mysql connector odbc:

myodbc-installer -a -d -n "MySQL ODBC 5.1 Driver" -t "Driver=/mysql/mysql-con/mysql/lib/libmyodbc5.so"

After I run the command, the system generated error such as

/usr/lib/hpux64/dld.so: Unable to find library 'libodbc.so.1'.

Killed

FYI, I already set the permission of all the folder/file of MySQL connector ODBC and UnixODBC to available to all user using chmod command and I have already set PATH for MySQL connector and UnixODBC. I hope that some of you can help me regarding this issue. Thank you in advance for the reply.

 

6 REPLIES 6
Steven Schweda
Honored Contributor

Re: /usr/lib/hpux64/dld.so: Unable to find library 'libodbc.so.1'.

   For newcomers: https://community.hpe.com/t5/x/x/m-p/6963384

> > > [...] As usual, showing actual commands with their actual output can
> > > be more helpful than vague descriptions or interpretations.
> >
> >    Still true.

   I keep trying, but it doesn't seem to be working.

> FYI, I already set the permission of all the folder/file of MySQL
> connector ODBC and UnixODBC to available to all user using chmod command
> and I have already set PATH for MySQL connector and UnixODBC.

   With my weak psychic powers, I don't know what you did with the
"chmod" command, or with your "PATH".

> /usr/lib/hpux64/dld.so: Unable to find library 'libodbc.so.1'.

   Around here:

dyi# find . -name 'libodbc\.so*'
./DriverManager/.libs/libodbc.so.2.0
./DriverManager/.libs/libodbc.so.2
./DriverManager/.libs/libodbc.so

   So, I'd guess that some of your software expects a ".1", but what you
have is a ".2".

   My quick Web search found this:

http://mailman.unixodbc.org/pipermail/unixodbc-support/2012-February/003071.html

which suggests creating some symlinks from missing files to existing
files.

MissX
Advisor

Re: /usr/lib/hpux64/dld.so: Unable to find library 'libodbc.so.1'.

> > I keep trying, but it doesn't seem to be working.

Sorry for not providing enough information.

The situation is, I'm trying to install MySQL ODBC Connector
and
the prerequisite is Unix ODBC which have been successfully installed.
But when we tried to install MySQL ODBC, we got this error:  
/usr/lib/hpux64/dld.so: Unable to find library 'libodbc.so.1'

Our steps in installing MySQL ODBC are as followed:

1) # gzip -dc mysql-connector-odbc-5.1.7-hpux11.31-ia64-64bit.tar.gz | tar xf -
2) # cd mysql-connector-odbc-5.1.7-hpux11.31-ia64-64bit
3) # cd bin
4) # myodbc-installer --a -d -n "MySQL ODBC 5.1 Driver" -t "Driver=/mysql/mysql-con/mysql/lib/libmyodbc5.so"
     Note: We created symlink to mysql-connector-odbc-5.1.7-hpux11.31-ia64-64bit as mysql

During step 4, we encounter the error: /usr/lib/hpux64/dld.so: Unable to find library 'libodbc.so.1'

 

> >  With my weak psychic powers, I don't know what you did with the
"chmod" command, or with your "PATH".

# cd /mysql
# chmod 777 *

All files inside /mysql path is as below:
image.png

MySQL bin and lib folder is inside mysql_5.0.18 (/mysql/mysql_5.0.18/bin).
bin, etc, include, and lib folder (/mysql/bin or /mysql/etc) belong to Unix ODBC.

Then, we set PATH for MySQL Connector bin and lib.
# export PATH=$PATH:/mysql/mysql-con/mysql/bin   
# export PATH=$PATH:/mysql/mysql-con/mysql/lib

The same goes for Unix ODBC.
# export PATH=$PATH:/mysql/bin
# export PATH=$PATH:/mysql/lib

 

> > So, I'd guess that some of your software expects a ".1", but what you
have is a ".2".

image.png

/mysql/lib/libodbc.so.1.0,
/mysql/lib/libodbc.so.1
/mysql/lib/libodbc.so
are the files created by Unix ODBC. Both
/mysql/lib/libodbc.so.1 and
/mysql/lib/libodbc.so are symlinks.

All the other files found are symlinks that I created because I'm not sure in which path will dld.so try to find libodbc.so.1.

Below is the output of
# cd /mysql/lib
# ll

image.png

Thank you for trying to help :)

Steven Schweda
Honored Contributor

Re: /usr/lib/hpux64/dld.so: Unable to find library 'libodbc.so.1'.

> [...] I'm trying to install MySQL ODBC Connector and the prerequisite
> is Unix ODBC which have been successfully installed.

   For the record, I know nothing about MySQL or ODBC Connector, and all
I know about UnixODBC is what you've seen here.  But...

>     Note: We created symlink to
> mysql-connector-odbc-5.1.7-hpux11.31-ia64-64bit as mysql

> > > [...] As usual, showing actual commands with their actual output can
> > > be more helpful than vague descriptions or interpretations.
> >
> >    Still true.

   _Please_ stop trying to describe what you did, and simply _show_
_exactly_ what you _actually_ did.  Also, copy+paste plain text, so that
the next fellow can do the same.  Inserting a _picture_ of plain text is
much less useful.

> # cd /mysql
> # chmod 777 *

   Why?  Now anyone on the system has permission to damage this stuff.
If I were you, I'd delete that mess, and install it again.  And then
don't change permissions in such a dangerous way.

> # export PATH=$PATH:/mysql/mysql-con/mysql/lib

   Why?

> # export PATH=$PATH:/mysql/lib

   Why?

   You seem to have the expected ".so.1[.0]" files, so if you get an
error like "Unable to find library 'libodbc.so.1'", then I'd guess that
someone is looking in the wrong place for it/them.

   I don't know what's inside "myodbc-installer", so I can't see the
actual command which is causing the "Unable to find library" error.
Knowing nothing, I assume that someone is trying to link some program,
but the link command does not specify the path(s) needed to locate
"libodbc.so.1".

   If you can't find anyone here with more MySQL knowledge, then you
might want to try to find a MySQL forum somewhere.

Matti_Kurkela
Honored Contributor
Solution

Re: /usr/lib/hpux64/dld.so: Unable to find library 'libodbc.so.1'.

$PATH is for executables, but libodbc.so.1 is a library. So "export PATH=$PATH:/mysql/lib" is probably useless.

Since the MySQL connector seems to require a 64-bit ODBC library, but does not know where to find it, you would need to add the /mysql/lib directory to $LD_LIBRARY_PATH. If that environment variable doesn't exist, create it. One command that would work in both cases would be:

# export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}/mysql/lib

Run this before starting the myodbc-installer. If it works, you may have to add this $LD_LIBRARY_PATH setting to the environment for all processes that wish to use the UnixODBC library and/or the MySQL ODBC connector.

The $LD_LIBRARY_PATH variable is for 64-bit libraries and, if I recall correctly, all Itanium libraries. If you need to specify a path for 32-bit PA_RISC libraries, you would have to use $SHLIB_PATH instead, and possibly use the chatr command to change some library search settings in the thing that requires that library, for historical reasons. (For details, see "man dld.so" for Itanium or "man dld.sl" for PA_RISC.)

MK
MissX
Advisor

Re: /usr/lib/hpux64/dld.so: Unable to find library 'libodbc.so.1'.

Thanks a lot Matti. You are right regarding the SHLIB_PATH.

Dennis Handly
Acclaimed Contributor

Re: /usr/lib/hpux64/dld.so: Unable to find library 'libodbc.so.1'.

@Steven Schweda  # find . -name 'libodbc\.so*'

 

FYI: find(1) takes a pattern and not a regex, so a "\" isn't needed to quote the period