On Tue, 2010-12-21 at 23:28 -0800, Nicholas Miell wrote:
On 12/21/2010 09:43 PM, Nicholas Miell wrote:
>
> ld.so isn't happy with that (lookups aren't based on filenames, so
> symlinks won't do anything and it will never find the library).
>
> You need to create an empty shared library with the
> libmysqlclient_r.so.16 SONAME that has a DT_AUXILIARY entry for
> libmysqlclient.so.16.
In theory, the following should produce a usable library:
eu-readelf -s /usr/lib64/mysql/libmysqlclient_r.so.16.0.0 |
./mysql_filter.gawk > hack.c
gcc $(rpm --eval %optflags) -fPIC -shared -fno-toplevel-reorder
-Wl,-soname,libmysqlclient_r.so.16 -Wl,--filter,libmysqlclient.so.16
hack.c -o libmysqlclient_r.so.16
but in practice, it gives me:
/usr/bin/ld: libmysqlclient_r.so.16: version node not found for symbol
sf_malloc_mem_limit@@libmysqlclient_16
/usr/bin/ld: failed to set dynamic section sizes: Bad value
collect2: ld returned 1 exit status
and nobody on the internet has any idea what that error means.
I cargo-culted this into the libva spec, at one point, from Gwenole
Beauchesne's Debian spec:
echo ".text"|gcc -xassembler - -o debian/tmp/usr/lib/libva.so.0.29.0 -shared
-Wl,-soname,libva.so.0 -Ldebian/tmp/usr/lib -lva-x11
No idea how it actually works, but I believe it effectively does what
you'd be trying to do if you did 'ln -s libva.so.0.29.0 libva.so.0' .
so maybe something like it could be used in this case. If it eats your
cat, don't blame me =)
--
Adam Williamson
Fedora QA Community Monkey
IRC: adamw | Fedora Talk: adamwill AT fedoraproject DOT org
http://www.happyassassin.net