RE: mysql_server_init: referenced symbol not found

"Preston, Lance A" <[email protected]> Thu, 26 Apr 2007 16:57:01 -0500
Newsgroups gmane.comp.db.mysql.perl
Message-ID <99427D3108E4EF40854E1827D973CB129A2419@usplm204.amer.corp.eds.com>
I never received a response to this question, and this is still an issue
for me. 
Anyone have any ideas of what to try?  I'm out of guesses.

Thanks.
Lance



-----Original Message-----
From: Preston, Lance A
Sent: Friday, March 30, 2007 3:34 PM
To: [email protected]
Subject: mysql_server_init: referenced symbol not found


After compiling and installing DBI 1.54 and DBD:mysql 4.004 on Solaris 8
(64-bit sparc), I get a "referenced symbol not found" error:

ld.so.1: test_mysql_access.pl: fatal: relocation error: file
/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBD/mysql/mysql.s
o: symbol mysql_server_init: referenced symbol not found

I believe I'm having trouble linking to
/usr/local/mysql/lib/libmysqlclient.a, because running "ldd -r" on
mysql.so turns up lots of missing references:

# ldd -r
/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBD/mysql/mysql.s
o
        librt.so.1 =>    /usr/lib/librt.so.1
        libgen.so.1 =>   /usr/lib/libgen.so.1
        libsocket.so.1 =>        /usr/lib/libsocket.so.1
        libnsl.so.1 =>   /usr/lib/libnsl.so.1
        libm.so.1 =>     /usr/lib/libm.so.1
        libc.so.1 =>     /usr/lib/libc.so.1
        libaio.so.1 =>   /usr/lib/libaio.so.1
        libdl.so.1 =>    /usr/lib/libdl.so.1
        libmp.so.2 =>    /usr/lib/libmp.so.2
        symbol not found: main
(/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBD/mysql/mysql.
so)
        /usr/platform/SUNW,Sun-Fire-V440/lib/libc_psr.so.1
        symbol not found: mysql_real_escape_string
(/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBD/mysql/mysql.
so)
        symbol not found: mysql_server_init
(/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBD/mysql/mysql.
so)
        symbol not found: mysql_init
(/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBD/mysql/mysql.
so)
        symbol not found: mysql_options
(/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBD/mysql/mysql.
so)
        symbol not found: mysql_real_connect
(/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBD/mysql/mysql.
so)
        symbol not found: mysql_errno
(/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBD/mysql/mysql.
so)
        symbol not found: mysql_error
(/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBD/mysql/mysql.
so)
        symbol not found: mysql_sqlstate
(/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBD/mysql/mysql.
so)
        symbol not found: mysql_commit
(/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBD/mysql/mysql.
so)
        symbol not found: mysql_rollback
(/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBD/mysql/mysql.
so)

        <<<<<<<< Output Truncated >>>>>>>>>>>>>>>>>

But I am including the location of mysql.h (/usr/local/mysql/include)
and libmysqlclient.a (/usr/local/mysql/lib) in the build:

# /usr/local/bin/perl Makefile.PL
--mysql_config=/usr/local/mysql/bin/mysql_config.lap PREFIX=/usr/local I
will use the following settings for compiling and testing:

  cflags        (mysql_config) = -I/usr/local/mysql/include
-I/usr/local/lib/perl5/5.8.7/sun4-solaris/CORE
/usr/local/mysql/lib/libmysqlclient.a
  embedded      (guessed     ) = 
  libs          (mysql_config) = -lz -lposix4 -lgen -lsocket -lnsl -lm
-L/usr/local/lib/perl5/5.8.7/sun4-solaris/CORE -lperl
-L/usr/local/mysql/lib -lmysqlclient
  mysql_config  (Users choice) = /usr/local/mysql/bin/mysql_config.lap
  nocatchstderr (default     ) = 0
  nofoundrows   (default     ) = 0
  ssl           (guessed     ) = 0
  testdb        (default     ) = test
  testhost      (default     ) = 
  testpassword  (default     ) = 
  testsocket    (default     ) = 
  testuser      (default     ) = 

To change these settings, see 'perl Makefile.PL --help' and 'perldoc
INSTALL'.

Using DBI 1.54 (for perl 5.008007 on sun4-solaris) installed in
/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBI/

# make
gcc -c  -I/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBI
-I/usr/local/mysql/include
-I/usr/local/lib/perl5/5.8.7/sun4-solaris/CORE
/usr/local/mysql/lib/libmysqlclient.a -DDBD_MYSQL_INSERT_ID_IS_GOOD -g
-fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -O    -DVERSION=\"4.004\"  -DXS_VERSION=\"4.004\"
-fPIC "-I/usr/local/lib/perl5/5.8.7/sun4-solaris/CORE"   dbdimp.c
gcc: /usr/local/mysql/lib/libmysqlclient.a: linker input file unused
because linking not done gcc -c
-I/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBI
-I/usr/local/mysql/include
-I/usr/local/lib/perl5/5.8.7/sun4-solaris/CORE
/usr/local/mysql/lib/libmysqlclient.a -DDBD_MYSQL_INSERT_ID_IS_GOOD -g
-fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -O    -DVERSION=\"4.004\"  -DXS_VERSION=\"4.004\"
-fPIC "-I/usr/local/lib/perl5/5.8.7/sun4-solaris/CORE"   mysql.c
gcc: /usr/local/mysql/lib/libmysqlclient.a: linker input file unused
because linking not done Running Mkbootstrap for DBD::mysql () chmod 644
mysql.bs rm -f blib/arch/auto/DBD/mysql/mysql.so LD_RUN_PATH="/usr/lib"
/usr/local/bin/perl myld gcc  -G -L/usr/local/lib
dbdimp.o  mysql.o  -o blib/arch/auto/DBD/mysql/mysql.so   -lz -lposix4
-lgen -lsocket -lnsl -lm -L/usr/local/lib/perl5/5.8.7/sun4-solaris/CORE
-lperl -L/usr/local/mysql/lib -lmysqlclient   
chmod 755 blib/arch/auto/DBD/mysql/mysql.so
cp mysql.bs blib/arch/auto/DBD/mysql/mysql.bs
chmod 644 blib/arch/auto/DBD/mysql/mysql.bs
Manifying blib/man3/DBD::mysql.3
Manifying blib/man3/DBD::mysql::INSTALL.3
Manifying blib/man3/Bundle::DBD::mysql.3

# make install
Installing
/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBD/mysql/mysql.s
o
Files found in blib/arch: installing files in blib/lib into architecture
dependent library tree Writing
/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBD/mysql/.packli
st
Appending installation info to
/usr/local/lib/perl5/5.8.7/sun4-solaris/perllocal.pod


I am using Perl 5.8.7, gcc 3.4.6, make 3.81, and mysql 4.1.22  (64-bit)

I also tried adding /usr/local/mysql/lib to my LD_LIBRARY_PATH, but that
does not help. I also had the same issue with DBI 1.53 and DBD:mysql
4.003. 

Why do I get "referenced symbol not found" when the missing references
are defined in libmysqlclient.a and that path is included in the linker?
And what can I do to fix this?

Thanks for your help!

Lance Preston

-- 
MySQL Perl Mailing List
For list archives: http://lists.mysql.com/perl
To unsubscribe:    http://lists.mysql.com/[email protected]