I can actually not answer your questions, but at least point you to the Developer Toolset 6 Release Notes [1] for a high-level explanation why the Developer Toolset is not required at runtime:

"""
Some newer library features are statically linked into applications built with Red Hat Developer Toolset to support execution on multiple versions of Red Hat Enterprise Linux. This adds a small additional security risk because regular Red Hat Enterprise Linux errata would not change this code. If the need for developers to rebuild their applications due to such an issue arises, Red Hat will signal this in a security erratum. Developers are strongly advised not to statically link their entire application for the same reasons.
"""

However, I can not explain how this is done in detail.
I suggest you have a closer look at /opt/rh/devtoolset-6/root/usr/lib/gcc/x86_64-redhat-linux/6.3.1/libstdc++.so

Peter

[1]: https://access.redhat.com/documentation/en-us/red_hat_developer_toolset/6/html/6.0_release_notes/dts6.0_release#Known_Issues


On 25/05/2021 04.22, Matthew Wheaton wrote:


---------- Forwarded message ---------
From: *Matthew Wheaton* <mwheat5...@gmail.com <mailto:mwheat5...@gmail.com>>
Date: Mon, May 24, 2021 at 10:04 PM
Subject: devtoolset-6 and libstdc++ revisited
To: <scl...@redhat.net <mailto:scl...@redhat.net>>


New to this list thing, giving a simple email a try.

Stephan was nice enough to answer my question prior to my joining the list and he was a big help.  My original question was why the version of libstdc++ that goes with gcc-6.3 is not included in devtoolset-6. Answer:  you don't need it.

I have to admit, I can use the devtoolset-6 version of g++ and compile with the system libraries just fine.  That's a revelation in itself. All compiles and all tests pass.  This is great, I can use libstdc++.so.6.13 (rhel-6 native) and not worry about the missing symbol required by the gcc-6.3 libstdc++.so.22 (packaged with gcc-6.3).  Note: this is just by setting the compile to point to the devtoolset-6 version of g++, I'm not even doing an 'scl enable'.  COMPILER=<devtoolset-6_path>

But if I can get success by simply using a different compiler, why shouldn't I be able to do the same thing with the gcc-6.3 compiler I already have?  How can I use the 6.3 compiler and point to the standard system libs in /usr/lib64?   What do I have to do to separate this duo? Attempts at setting LIBRARY_PATH or LD_LIBRARY_PATH don't seem to work.

To make matters more interesting, the build environment has the makefiles locked down pretty well.  They are not intended to be edited in any way.  There are a limited number of environment variables that the make sources, and that's about it.  The build log shows that the '-L' flag is not used to determine the location of libstdc++ and the GNU documentation does not reveal how it picks up default libs.  Can anyone point me in the right direction?

Thanks,
Matt





_______________________________________________
SCLorg mailing list
SCLorg@redhat.com
https://listman.redhat.com/mailman/listinfo/sclorg



_______________________________________________
SCLorg mailing list
SCLorg@redhat.com
https://listman.redhat.com/mailman/listinfo/sclorg

Reply via email to