Ldd broken in 7.0? -- Was "Help--Program exists but can't execute"
Hi: Can anyone help me get my eagle program running on Suse 7.0? Eagle is a printed circuit CAD program from www.cadsoft.de. It runs fine on Suse 6.2 and an old Slackware system. This post contains a detailed account of the current status of this problem. The program is installed identically on a Suse 6.2 partition and a Suse 7.0 partition. (Except that to install in 7.0 I had to install shlibs5 before Eagle.) It's path is /opt/eagle/bin/eagle . I can execute it fine in 6.2 but can't execute it in 7.0 . Running 7.0, here the shell(?) tells us the program doesn't exist: ~ $ /opt/eagle/bin/eagle bash: /opt/eagle/bin/eagle: No such file or directory But we see very clearly it does exist and it is an ELF executable with correct permissions: ~ $ ls -l /opt/eagle/bin/eagle -rwxr-xr-x 1 root root 3924300 May 30 1999 /opt/eagle/bin/eagle ~ $ file /opt/eagle/bin/eagle /opt/eagle/bin/eagle: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), stripped But when we look at what libs it uses we find a problem again: ~ $ ldd /opt/eagle/bin/eagle /usr/bin/ldd: /opt/eagle/bin/eagle: No such file or directory The same command executed on the eagle executable in my Suse 6.2 partition (running 6.2) shows a list of libs. The fact that ldd doesn't work on the eagle in 7.0 shows that the problem is somewhere in the 7.0 linking/lib database system. So I took the list of libs I know eagle needs from the 6.2 system, then grepped the 7.0 system ld.so.cache for these libs. The results are shown below. The required libs are all on the Suse 7.0 system. So the problem is not that libs are missing. The problem is also not that the 7.0 system doesn't have the libs in its database. It does have them! The problem is that something is wrong with the 7.0 linking program. I think. Unless someone knows better what is wrong here, and perhaps how to fix it. It took me a long time to find the clue of the broken ldd result, and that it is different from the result on the 6.2 system. The shell's error message is not very informative, as it hides the fact that the linker (I think) is the one who is complaining. Results of searching the 7.0 system for libs needed by eagle: ~ $ /sbin/ldconfig -p|grep libXt.so.6 libXt.so.6 (libc6) => /usr/X11R6/lib/libXt.so.6 libXt.so.6 (libc5) => /usr/i486-linux-libc5/lib/libXt.so.6 ~ $ /sbin/ldconfig -p|grep libXext.so.6 libXext.so.6 (libc6) => /usr/X11R6/lib/libXext.so.6 libXext.so.6 (libc5) => /usr/i486-linux-libc5/lib/libXext.so.6 ~ $ /sbin/ldconfig -p|grep libX11.so.6 libX11.so.6 (libc6) => /usr/X11R6/lib/libX11.so.6 libX11.so.6 (libc5) => /usr/i486-linux-libc5/lib/libX11.so.6 ~ $ /sbin/ldconfig -p|grep libstdc++.so.27 libstdc++.so.27 (libc5) => /usr/i486-linux-libc5/lib/libstdc++.so.27 ~ $ /sbin/ldconfig -p|grep libm.so.5 libm.so.5 (libc5) => /usr/i486-linux-libc5/lib/libm.so.5 ~ $ /sbin/ldconfig -p|grep libc.so.5 libc.so.5 (libc5) => /usr/i486-linux-libc5/lib/libc.so.5 ~ $ /sbin/ldconfig -p|grep libSM.so.6 libSM.so.6 (libc6) => /usr/X11R6/lib/libSM.so.6 libSM.so.6 (libc5) => /usr/i486-linux-libc5/lib/libSM.so.6 ~ $ /sbin/ldconfig -p|grep libICE.so.6 libICE.so.6 (libc6) => /usr/X11R6/lib/libICE.so.6 libICE.so.6 (libc5) => /usr/i486-linux-libc5/lib/libICE.so.6 As you can see, all the libs are found in the 7.0 system database. Thank you for comments. -- _____________________ Christopher R. Carlen crcarl@inreach.com Linux 2.2.10
Chris Carlen wrote:
2. The eagle program is installed in /opt/eagle/bin:
~ $ ls -l /opt/eagle/bin/eagle -rwxr-xr-x 1 root root 3924300 May 30 1999 /opt/eagle/bin/eagle
3. Trying to run the program using the direct path also fails:
~ $ /opt/eagle/bin/eagle bash: /opt/eagle/bin/eagle: No such file or directory
The error messages above were very puzzling, sending me on a wild goose chase. The cause of the problem was that I satisfied lib deps for eagle when installing the software by installing the package shlibs5 from a Suse 6.2 onto the Suse 7.0 distro. Since no error messages ever occured indicating that libraries were missing, I didn't suspect anything was wrong with the shlibs5. In fact, I verified by hand that every lib eagle wants was indeed present and in the ld.so.cache on Suse 7.0. So why didn't eagle work??? The reason is that the Suse 7.0 linker/ldd programs don't recognize the libc5 stuff. The shlibs5 package from Suse 7.0 contains special stubs for ldd and an additional ldd-libc5 binary that make it all work. Installing the shlibs5 from 6.2 onto 7.0 was a recipe for extreme confusion. Major oops--but I'm happy as hell that I can run my program now! _____________________ Christopher R. Carlen crcarl@inreach.com Linux 2.2.10
* Chris Carlen [Sat, 24 Feb 2001 10:43:57 -0800]:
Can anyone help me get my eagle program running on Suse 7.0? Eagle is a printed circuit CAD program from www.cadsoft.de.
As has been told already, you need to install the shlibs5 package. Or get the new Eagle4 rpm at ftp://ftp.cadsoft.de/pub/program/4.01/eagle-4.01e-1.i386.rpm as this has been linked against glibc 2.1, so it should run without problems on your system. Philipp -- customer: My computer is running Windows98. hotline : And? customer: The machine doesn't work. hotline : You already said that. -- Penguins to save the dinosaurs -- Handelsblatt on Linux for S/390
* Chris Carlen [Sat, 24 Feb 2001 10:43:57 -0800]:
~ $ /sbin/ldconfig -p|grep libXt.so.6 libXt.so.6 (libc6) => /usr/X11R6/lib/libXt.so.6 libXt.so.6 (libc5) => /usr/i486-linux-libc5/lib/libXt.so.6 ~ $ /sbin/ldconfig -p|grep libXext.so.6 libXext.so.6 (libc6) => /usr/X11R6/lib/libXext.so.6 libXext.so.6 (libc5) => /usr/i486-linux-libc5/lib/libXext.so.6 ~ $ /sbin/ldconfig -p|grep libX11.so.6 libX11.so.6 (libc6) => /usr/X11R6/lib/libX11.so.6 libX11.so.6 (libc5) => /usr/i486-linux-libc5/lib/libX11.so.6 ~ $ /sbin/ldconfig -p|grep libstdc++.so.27 libstdc++.so.27 (libc5) => /usr/i486-linux-libc5/lib/libstdc++.so.27 ~ $ /sbin/ldconfig -p|grep libm.so.5 libm.so.5 (libc5) => /usr/i486-linux-libc5/lib/libm.so.5 ~ $ /sbin/ldconfig -p|grep libc.so.5 libc.so.5 (libc5) => /usr/i486-linux-libc5/lib/libc.so.5 ~ $ /sbin/ldconfig -p|grep libSM.so.6 libSM.so.6 (libc6) => /usr/X11R6/lib/libSM.so.6 libSM.so.6 (libc5) => /usr/i486-linux-libc5/lib/libSM.so.6 ~ $ /sbin/ldconfig -p|grep libICE.so.6 libICE.so.6 (libc6) => /usr/X11R6/lib/libICE.so.6 libICE.so.6 (libc5) => /usr/i486-linux-libc5/lib/libICE.so.6
There's nothing wrong with SuSE 7.0. For the Eagle version you have you need the libc5 libraries. 7.0's ldd can't recognize those as it only can deal with glibc2. And *please*, wait a day or two for replies before posting again. Philipp -- customer: My computer is running Windows98. hotline : And? customer: The machine doesn't work. hotline : You already said that.
participants (3)
-
Chris Carlen
-
Philipp Thomas
-
Philipp Thomas