From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23375 invoked by alias); 31 Mar 2003 10:16:02 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 23327 invoked by uid 71); 31 Mar 2003 10:16:01 -0000 Date: Mon, 31 Mar 2003 12:16:00 -0000 Message-ID: <20030331101601.23326.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: Hallvard B Furuseth Subject: Re: c++/10268: C++ executables fail: libstdc++.so.5 not found Reply-To: Hallvard B Furuseth X-SW-Source: 2003-03/txt/msg02100.txt.bz2 List-Id: The following reply was made to PR c++/10268; it has been noted by GNATS. From: Hallvard B Furuseth To: ehrhardt@mathematik.uni-ulm.de, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org, gcc-gnats@gcc.gnu.org Cc: Subject: Re: c++/10268: C++ executables fail: libstdc++.so.5 not found Date: Mon, 31 Mar 2003 12:14:10 +0200 ehrhardt@mathematik.uni-ulm.de writes: > This behaviour is intentional. -R adds paths to the executable and > gcc should not add system specific paths to an executable. > You can either set LD_RUN_PATH at compile time or LD_LIBRARY_PATH > at run time. *What*? Why is it better to have an executable which doesn't work than one where GCC has added a path which is needed to make it work? In particular since the user must add the same path to make it work anyway. If you don't want to add to the executable's path, I think you should only build static libraries. If one configures gcc to build dynamic libraries, add the path and warn about whatever the problem is with adding such a path, or don't add it and give a very loud warning that g++ will build executables that don't work. If you don't want to do that, I it would be better to remove the -L too from g++'s defaults, at least that way the user won't think he has built a working executable just because he compiled with standard options and the compilation succeeded. And document this, and how one is supposed to make it work. Requiring users to set LD_LIBRARY_PATH at run time is a silly default, and setting environment variables doesn't work well in Makefiles anyway, but I suppose one could add this to Makefile: LDFLAGS=-R`g++ -print-file-name=libstdc++.so.5 | sed 's%/[^/]*$%%'` (Does that work if there are other libstdc++'s in the path?) Or better, some new command which doesn't require the user to understand sed and pipes. I've noticed there is a libgcc_s.so as well which only seems to be used by g++, is that always in the same location as libstdc++.so or can one need another -R for that? BTW, can I configure gcc to put that directory in the path for g++ but not for gcc, or edit the specs file to do so? -- Hallvard