[linux-audio-user] Re: Needing help in resolving the Pd-Gem package linker problem

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: [linux-audio-user] Re: Needing help in resolving the Pd-Gem package linker problem
From: Norbert Wolff (norbert_wolff_AT_t-online.de)
Date: Tue Apr 01 2003 - 18:16:03 EEST


On Mon, 31 Mar 2003 22:59:35 -0500
Ivica Bukvic <ico_AT_fuse.net> wrote:

> I am trying to compile Gem from source (for Pd), and while it does compile
> without any problems at runtime (pd -lib Gem) I get the following issue:
>
> /usr/lib/pd/extra/Gem.pd_linux: /usr/lib/pd/extra/Gem.pd_linux: undefined
> symbol: __ctype_toupper_loc
> /usr/lib/pd/extra/Gem: can't load library

It seems that you have used the headers of an old glibc when compiling and try
to run with a newer glibc.

__ctype_toupper_loc was introduced in September 2002 glibc (don't
know the version-number).

Execute the file /lib/libc.so.6, it will tell you its version.
I don't know a way to look up the Version of your installed Header-Files
from glibc, maybe you can ask your Package-Manager.

Anyway, your Headers and Librarys MUST match !

> I tried building the static version, but then I get the following error:
> g++ -o Gem.pd_linux -L/usr/X11R6/lib -L../../../GemLibs/liborb ../Manips/*.o
> ../Particles/*.o ../Base/*.o ../MarkEx/*.o ../Pixes/*.o ../Controls/*.o
> ../Nongeos/*.o ../Geos/*.o ../openGL/*.o -shared -lquicktime -lmpeg3 -lorb
> -lglib -lgltt -lttf -ljpeg -ltiff -lpng -lglut -lGLU -lGL -Wl,-Bstatic -lz
> -lm -Wl,-shared -Wl,-export-dynamic -lXxf86vm -lXext -lX11
> /usr/bin/ld: cannot find -lgcc_s
> collect2: ld returned 1 exit status

Your gcc was configured with "--enable-shared" to use a shared libgcc (called
libgcc_s; only used for C++), but can't find it. See below

Also you dont really try to build the static version, as -shared -Wl,-shared
-Wl,-export-dynamic shows.

> I then checked
> ld -lgcc_s
>
> And the only thing I got was:
> ld: warning: cannot find entry symbol _start; not setting start address
> Now, could someone please tell me what the heck does this mean???

You have invoked the linker ld, ist is used to link a prog, not to query
dependencies

> ldd /usr/lib/libgcc_s.so gives:
> libc.so.6 => /lib/i686/libc.so.6 (0x4001a000)
> /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

You have the needed lgcc_s in a place where the linker normaly looks for it.
But
> /usr/bin/ld: cannot find -lgcc_s
says, that he can't find it ? Very strange ...

Try to alter the specs-file from your gcc, it should be in the syme location
as libgcc.a (try gcc --print-libgcc-file-name).

The specs file contains a line like
*libgcc:
-lgcc

replace -lgcc with the following line

"%{!shared:-lgcc} %{shared:/usr/lib/libgcc_s.so}"

(only valid for gcc3, i don't know if older gcc's use the same Syntax !!)

In case of an accident (the file is very sensible with spaces)
you can reconstruct the original specfile with
  gcc -dumpspecs > specs; or simply delete the file, gcc has a copy of it
built in.

You my also have a look in the linker-scripts from ld, there location depends
on the configuration binutils, search for elf_i386*.
Then look if the SEARCH_DIR-Entrys includes "/usr/lib".

But the best thing you could do to solve your Problem is to reinstall your
glibc, glibc-devel, gcc, g++ and binutils-packages, when this does not not help,
consider switching to another distribution ...

Regards

        Norbert


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Tue Apr 01 2003 - 18:31:15 EEST