On Mon, 31 Mar 2003 22:59:35 -0500 Ivica Bukvic <ico@xxxxxxxx> 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