tricky: Getting Sybase ASE 12.5.4 to run on Linux PowerPC 64bit

For the past few days, we’ve been struggling with getting Sybase’s ASE DBMS to start on our new Linux PowerPC (a virtual machine running on top of AIX). We were able to install the software with no problems. We weren’t able to get past the __gxx_personality_v0 error:

symbol lookup error: /opt/ibmcmp/lib64/libibmc++.so.1: undefined symbol: __gxx_personality_v0

The error is a linking issue with IBM’s Visual Age runtime (a c/c++ runtime). I was able to confirm with Sybase that ASE will NOT run with Visual Age 8.x or 9.x and that it requires the 7.0 runtime. I downloaded the 7.0 runtime from IBM’s website but still received the same error.

ASE’s linking looked okay however:

[sybase@sybase ASE-12_5]$ ldd -v bin/dataserver
libbtsymbols.so => /sybase/ASE-12_5/lib/libbtsymbols.so (0x0000008000002000)
librt.so.1 => /lib64/tls/librt.so.1 (0x0000008000647000)
libm.so.6 => /lib64/tls/libm.so.6 (0x0000008081560000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x0000008000674000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000008081510000)
libibmc++.so.1 => /opt/ibmcmp/lib64/libibmc++.so.1 (0x00000080006a4000)
libpam.so.0 => /lib64/libpam.so.0 (0x00000080006b7000)
libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x00000080006d3000)
libaio.so.1 => /lib/libaio.so.1 (0x00000080006ff000)
libc.so.6 => /lib64/tls/libc.so.6 (0x00000080812f0000)
/lib64/ld64.so.1 (0x00000080812b0000)
libaudit.so.0 => /lib64/libaudit.so.0 (0x0000008000711000)

I worked with Sybase & IBM to track down the cause but it was IBM’s Brian Shen that was able to identify the culprit. We need to preload the libstdc++.so.5 library:

export LD_PRELOAD=/usr/lib64/libstdc++.so.5

Once we did that, we verified that the library was being picked up:

[sybase@sybase install]$ ldd $SYBASE/$SYBASE_ASE/bin/dataserver
/usr/lib64/libstdc++.so.5 (0x0000008000002000)
libbtsymbols.so => /sybase/ASE-12_5/lib/libbtsymbols.so (0x0000008000146000)
librt.so.1 => /lib64/tls/librt.so.1 (0x000000800078c000)
libm.so.6 => /lib64/tls/libm.so.6 (0x0000008081560000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00000080ef740000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000008081510000)
libibmc++.so.1 => /opt/ibmcmp/lib64/libibmc++.so.1 (0x00000080007ba000)
libpam.so.0 => /lib64/libpam.so.0 (0x00000080ef6a0000)
libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x00000080007cd000)
libaio.so.1 => /lib/libaio.so.1 (0x00000080007fa000)
libc.so.6 => /lib64/tls/libc.so.6 (0x00000080812f0000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x000000800080b000)
/lib64/ld64.so.1 (0x00000080812b0000)
libaudit.so.0 => /lib64/libaudit.so.0 (0x00000080ef6c0000)

If you receive the following error, you can safely ignore it:

ERROR: ld.so: object ‘/usr/lib64/libstdc++.so.5’ from LD_PRELOAD cannot be preloaded: ignored

Don’t forget to set up your environment to include the IBM Visual Age runtime:

export LD_LIBRARY_PATH=/opt/ibmcmp/lib64:${LD_LIBRARY_PATH}
export PATH=$PATH:/opt/ibmcmp/lib64

Share Button