This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug bootstrap/49829] [4.7 Regression] --disable-static --enable-shared regression: cannot find -lstdc++
- From: "bkoz at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 23 Jan 2012 22:21:53 +0000
- Subject: [Bug bootstrap/49829] [4.7 Regression] --disable-static --enable-shared regression: cannot find -lstdc++
- Auto-submitted: auto-generated
- References: <bug-49829-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49829
--- Comment #16 from Benjamin Kosnik <bkoz at gcc dot gnu.org> 2012-01-23 22:21:53 UTC ---
Well I tried to just use the generated Makefile rules to hack together a
solution for --disable-static using the convenience libraries
My plan was to generate a libstdc++convenience library always, and then if
libstdc++.a is not created as per the usual (ie, --disable-static), then to
create it from libstdc++convenience.
Like so:
libstdc++-v3/src/Makefile.am:
# Make a non-installed convenience library, so that --disable-static
# may work.
libstdc++convenience.la: $(toolexeclib_LTLIBRARIES)
$(CXXLINK) $(libstdc___la_LIBADD) $(LIBS); \
if test ! -f .libs/libstdc++.a; then \
cp .libs/libstdc++convenience.a .libs/libstdc++.a; \
fi; \
echo `date` > stamp-libstdc++convenience;
results in the build completing and:
/mnt/share/bld/gcc.git-disable-static/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src
has
drwxrwxr-x 3 bkoz bkoz 4.0K Jan 23 11:51 c++11/
drwxrwxr-x 3 bkoz bkoz 4.0K Jan 23 11:51 c++98/
drwxrwxr-x 2 bkoz bkoz 4.0K Jan 23 11:51 .libs/
-rw-rw-r-- 1 bkoz bkoz 905 Jan 23 11:51 libstdc++convenience.la
-rw-rw-r-- 1 bkoz bkoz 985 Jan 23 11:51 libstdc++.la
-rw-rw-r-- 1 bkoz bkoz 47K Jan 23 11:51 libstdc++-symbols.ver
-rw-rw-r-- 1 bkoz bkoz 31K Jan 23 11:50 Makefile
-rw-rw-r-- 1 bkoz bkoz 29 Jan 23 11:51 stamp-libstdc++convenience
and
/mnt/share/bld/gcc.git-disable-static/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs
has:
drwxrwxr-x 2 bkoz bkoz 4.0K Jan 23 14:17 ./
drwxrwxr-x 5 bkoz bkoz 4.0K Jan 23 14:17 ../
-rw-rw-r-- 1 bkoz bkoz 23M Jan 23 14:17 libstdc++.a
-rw-rw-r-- 1 bkoz bkoz 23M Jan 23 14:17 libstdc++convenience.a
lrwxrwxrwx 1 bkoz bkoz 26 Jan 23 14:17 libstdc++convenience.la ->
../libstdc++convenience.la
lrwxrwxrwx 1 bkoz bkoz 15 Jan 23 14:17 libstdc++.la -> ../libstdc++.la
-rw-rw-r-- 1 bkoz bkoz 986 Jan 23 14:17 libstdc++.lai
lrwxrwxrwx 1 bkoz bkoz 19 Jan 23 14:17 libstdc++.so -> libstdc++.so.6.0.17*
lrwxrwxrwx 1 bkoz bkoz 19 Jan 23 14:17 libstdc++.so.6 -> libstdc++.so.6.0.17*
-rwxrwxr-x 1 bkoz bkoz 8.2M Jan 23 14:17 libstdc++.so.6.0.17*
I'm going to check this with cross compiles, and then if that works check it
in.
The hacky-bits for copying libstdc++ can hopefully be cleaned up at a later
date or by a certified build genius.