Message ID | 20200524155818.126961-1-romain.naour@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series | package/qt5/qt5webengine: don't link with libstdc++.a on the host | expand |
Hi Peter, Le 24/05/2020 à 17:58, Romain Naour a écrit : > While cross-compiling, qt5webengine is building a host tool but > want to link the libstdc++ statically. This requires to install > libstdc++-static package on the host (Fedora package name). > > Otherwise the link fail with: > > [185/185] LINK gn > FAILED: gn > /usr/bin/g++ -O3 -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-strip-all -Wl,--as-needed -static-libstdc++ -pthread -o gn -Wl,--start-group tools/gn/gn_main.o base.a gn_lib.a -Wl,--end-group -ldl > /usr/bin/ld : unable to find -lstdc++ > [...] > Project ERROR: GN build error! > > Add --no-static-libstdc++ argument to gn.pro to link to > libstdc++.so.6 instead of libstdc++.a. > > --no-static-libstdc++ has been added by [1] but it force > linking statically by default. > > [1] https://github.com/qt/qtwebengine-chromium/commit/cfab9198a9917f42cf08b1caf84ab9b71aac1911#diff-905c8f054808213577c0a92d1b704615 Did you noticed this issue while building for qt5declarative issue? On my pc, the static glibc wasn't installed. What do you think? Best regards, Romain > Signed-off-by: Romain Naour <romain.naour@gmail.com> > Cc: Gaël Portay <gael.portay@collabora.com> > --- > ...ro-don-t-link-statically-with-libstc.patch | 51 +++++++++++++++++++ > 1 file changed, 51 insertions(+) > create mode 100644 package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch > > diff --git a/package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch b/package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch > new file mode 100644 > index 0000000000..dff3e6c849 > --- /dev/null > +++ b/package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch > @@ -0,0 +1,51 @@ > +From 7ae73da23ad998bd1e63ad213cf7a02e61191951 Mon Sep 17 00:00:00 2001 > +From: Romain Naour <romain.naour@gmail.com> > +Date: Sat, 23 May 2020 19:01:19 +0200 > +Subject: [PATCH] gn.pro: don't link statically with libstc++ > +MIME-Version: 1.0 > +Content-Type: text/plain; charset=UTF-8 > +Content-Transfer-Encoding: 8bit > + > +While cross-compiling, qt5webengine is building a host tool but > +want to link the libstdc++ statically. This requires to install > +libstdc++-static package on the host (Fedora package name). > + > +Otherwise the link fail with: > + > + [185/185] LINK gn > + FAILED: gn > + /usr/bin/g++ -O3 -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-strip-all -Wl,--as-needed -static-libstdc++ -pthread -o gn -Wl,--start-group tools/gn/gn_main.o base.a gn_lib.a -Wl,--end-group -ldl > + /usr/bin/ld : unable to find -lstdc++ > + [...] > + Project ERROR: GN build error! > + > +Add --no-static-libstdc++ argument to gn.pro to link to > +libstdc++.so.6 instead of libstdc++.a. > + > +--no-static-libstdc++ has been added by [1] but it force > +linking statically by default. > + > +[1] https://github.com/qt/qtwebengine-chromium/commit/cfab9198a9917f42cf08b1caf84ab9b71aac1911#diff-905c8f054808213577c0a92d1b704615 > + > +Signed-off-by: Romain Naour <romain.naour@gmail.com> > +--- > + src/buildtools/gn.pro | 3 ++- > + 1 file changed, 2 insertions(+), 1 deletion(-) > + > +diff --git a/src/buildtools/gn.pro b/src/buildtools/gn.pro > +index 033202e6..5dd8e241 100644 > +--- a/src/buildtools/gn.pro > ++++ b/src/buildtools/gn.pro > +@@ -20,7 +20,8 @@ build_pass|!debug_and_release { > + > + gn_gen_args = --no-last-commit-position --out-path $$out_path \ > + --cc \"$$which($$QMAKE_CC)\" --cxx \"$$which($$QMAKE_CXX)\" \ > +- --ld \"$$which($$QMAKE_LINK)\" > ++ --ld \"$$which($$QMAKE_LINK)\" \ > ++ --no-static-libstdc++ > + > + msvc:!clang_cl: gn_gen_args += --use-lto > + > +-- > +2.25.4 > + >
Hello Romain, On Tue, 26 May 2020 23:02:14 +0200, Romain Naour <romain.naour@gmail.com> wrote: > Hi Peter, > > Le 24/05/2020 à 17:58, Romain Naour a écrit : > > While cross-compiling, qt5webengine is building a host tool but > > want to link the libstdc++ statically. This requires to install > > libstdc++-static package on the host (Fedora package name). > > > > Otherwise the link fail with: > > > > [185/185] LINK gn > > FAILED: gn > > /usr/bin/g++ -O3 -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-strip-all -Wl,--as-needed -static-libstdc++ -pthread -o gn -Wl,--start-group tools/gn/gn_main.o base.a gn_lib.a -Wl,--end-group -ldl > > /usr/bin/ld : unable to find -lstdc++ > > [...] > > Project ERROR: GN build error! > > > > Add --no-static-libstdc++ argument to gn.pro to link to > > libstdc++.so.6 instead of libstdc++.a. > > > > --no-static-libstdc++ has been added by [1] but it force > > linking statically by default. > > > > [1] https://github.com/qt/qtwebengine-chromium/commit/cfab9198a9917f42cf08b1caf84ab9b71aac1911#diff-905c8f054808213577c0a92d1b704615 > > Did you noticed this issue while building for qt5declarative issue? > On my pc, the static glibc wasn't installed. I think the problem is qt5webengine specific as it is the only package compiling a host build tool GN.... Never observed the problem with qt5webengine, maybe because on OpenSUSE there is a static libstdc++ provided with the 'normal' libstdc++ devel package, eg. $ rpm -qf /usr/lib64/gcc/x86_64-suse-linux/9/libstdc++.a libstdc++6-devel-gcc9-9.3.1+git1296-1.7.x86_64 Regards, Peter > > What do you think? > > Best regards, > Romain > > > Signed-off-by: Romain Naour <romain.naour@gmail.com> > > Cc: Gaël Portay <gael.portay@collabora.com> > > --- > > ...ro-don-t-link-statically-with-libstc.patch | 51 +++++++++++++++++++ > > 1 file changed, 51 insertions(+) > > create mode 100644 package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch > > > > diff --git a/package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch b/package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch > > new file mode 100644 > > index 0000000000..dff3e6c849 > > --- /dev/null > > +++ b/package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch > > @@ -0,0 +1,51 @@ > > +From 7ae73da23ad998bd1e63ad213cf7a02e61191951 Mon Sep 17 00:00:00 2001 > > +From: Romain Naour <romain.naour@gmail.com> > > +Date: Sat, 23 May 2020 19:01:19 +0200 > > +Subject: [PATCH] gn.pro: don't link statically with libstc++ > > +MIME-Version: 1.0 > > +Content-Type: text/plain; charset=UTF-8 > > +Content-Transfer-Encoding: 8bit > > + > > +While cross-compiling, qt5webengine is building a host tool but > > +want to link the libstdc++ statically. This requires to install > > +libstdc++-static package on the host (Fedora package name). > > + > > +Otherwise the link fail with: > > + > > + [185/185] LINK gn > > + FAILED: gn > > + /usr/bin/g++ -O3 -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-strip-all -Wl,--as-needed -static-libstdc++ -pthread -o gn -Wl,--start-group tools/gn/gn_main.o base.a gn_lib.a -Wl,--end-group -ldl > > + /usr/bin/ld : unable to find -lstdc++ > > + [...] > > + Project ERROR: GN build error! > > + > > +Add --no-static-libstdc++ argument to gn.pro to link to > > +libstdc++.so.6 instead of libstdc++.a. > > + > > +--no-static-libstdc++ has been added by [1] but it force > > +linking statically by default. > > + > > +[1] https://github.com/qt/qtwebengine-chromium/commit/cfab9198a9917f42cf08b1caf84ab9b71aac1911#diff-905c8f054808213577c0a92d1b704615 > > + > > +Signed-off-by: Romain Naour <romain.naour@gmail.com> > > +--- > > + src/buildtools/gn.pro | 3 ++- > > + 1 file changed, 2 insertions(+), 1 deletion(-) > > + > > +diff --git a/src/buildtools/gn.pro b/src/buildtools/gn.pro > > +index 033202e6..5dd8e241 100644 > > +--- a/src/buildtools/gn.pro > > ++++ b/src/buildtools/gn.pro > > +@@ -20,7 +20,8 @@ build_pass|!debug_and_release { > > + > > + gn_gen_args = --no-last-commit-position --out-path $$out_path \ > > + --cc \"$$which($$QMAKE_CC)\" --cxx \"$$which($$QMAKE_CXX)\" \ > > +- --ld \"$$which($$QMAKE_LINK)\" > > ++ --ld \"$$which($$QMAKE_LINK)\" \ > > ++ --no-static-libstdc++ > > + > > + msvc:!clang_cl: gn_gen_args += --use-lto > > + > > +-- > > +2.25.4 > > + > > >
Hi Peter, Le 26/05/2020 à 23:13, Peter Seiderer a écrit : > Hello Romain, > > On Tue, 26 May 2020 23:02:14 +0200, Romain Naour <romain.naour@gmail.com> wrote: > >> Hi Peter, >> >> Le 24/05/2020 à 17:58, Romain Naour a écrit : >>> While cross-compiling, qt5webengine is building a host tool but >>> want to link the libstdc++ statically. This requires to install >>> libstdc++-static package on the host (Fedora package name). >>> >>> Otherwise the link fail with: >>> >>> [185/185] LINK gn >>> FAILED: gn >>> /usr/bin/g++ -O3 -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-strip-all -Wl,--as-needed -static-libstdc++ -pthread -o gn -Wl,--start-group tools/gn/gn_main.o base.a gn_lib.a -Wl,--end-group -ldl >>> /usr/bin/ld : unable to find -lstdc++ >>> [...] >>> Project ERROR: GN build error! >>> >>> Add --no-static-libstdc++ argument to gn.pro to link to >>> libstdc++.so.6 instead of libstdc++.a. >>> >>> --no-static-libstdc++ has been added by [1] but it force >>> linking statically by default. >>> >>> [1] https://github.com/qt/qtwebengine-chromium/commit/cfab9198a9917f42cf08b1caf84ab9b71aac1911#diff-905c8f054808213577c0a92d1b704615 >> >> Did you noticed this issue while building for qt5declarative issue? >> On my pc, the static glibc wasn't installed. > > I think the problem is qt5webengine specific as it is the only package compiling > a host build tool GN.... > > Never observed the problem with qt5webengine, maybe because on OpenSUSE there is > a static libstdc++ provided with the 'normal' libstdc++ devel package, eg. > $ rpm -qf /usr/lib64/gcc/x86_64-suse-linux/9/libstdc++.a > libstdc++6-devel-gcc9-9.3.1+git1296-1.7.x86_64 I'm using Fedora, and the packaging between Linux distros can be quite different. See for example, perl packaging in Debian (all in one) and the perl packaging in Fedora (several dozen of packages). For the libstdc++, the libstdc++-devel package doesn't provide the static library. I have to install libstdc++-static package for that. Best regards, Romain > > Regards, > Peter >
On Sun, 24 May 2020 17:58:18 +0200 Romain Naour <romain.naour@gmail.com> wrote: > + gn_gen_args = --no-last-commit-position --out-path $$out_path \ > + --cc \"$$which($$QMAKE_CC)\" --cxx \"$$which($$QMAKE_CXX)\" \ > +- --ld \"$$which($$QMAKE_LINK)\" > ++ --ld \"$$which($$QMAKE_LINK)\" \ > ++ --no-static-libstdc++ If we have to pass this, doesn't it mean that the host tools are built statically ? Why are they built statically ? They really shouldn't be built statically at all. I believe this is what should be fixed, rather than just avoiding specifically from linking statically with libstdc++. Thomas
Hi Thomas, Le 29/05/2020 à 23:34, Thomas Petazzoni a écrit : > On Sun, 24 May 2020 17:58:18 +0200 > Romain Naour <romain.naour@gmail.com> wrote: > >> + gn_gen_args = --no-last-commit-position --out-path $$out_path \ >> + --cc \"$$which($$QMAKE_CC)\" --cxx \"$$which($$QMAKE_CXX)\" \ >> +- --ld \"$$which($$QMAKE_LINK)\" >> ++ --ld \"$$which($$QMAKE_LINK)\" \ >> ++ --no-static-libstdc++ > > If we have to pass this, doesn't it mean that the host tools are built > statically ? Why are they built statically ? They really shouldn't be > built statically at all. I believe this is what should be fixed, rather > than just avoiding specifically from linking statically with libstdc++. Without this option host tools are built statically because this option is enabled by default. Adding --no-static-libstdc++ allow to link dynamically with libc.so.6. Best regards, Romain > > Thomas >
On Fri, 29 May 2020 23:48:09 +0200 Romain Naour <romain.naour@gmail.com> wrote: > > If we have to pass this, doesn't it mean that the host tools are built > > statically ? Why are they built statically ? They really shouldn't be > > built statically at all. I believe this is what should be fixed, rather > > than just avoiding specifically from linking statically with libstdc++. > > Without this option host tools are built statically because this option is > enabled by default. Can't we remove this, and instead link dynamically the host tools ? > Adding --no-static-libstdc++ allow to link dynamically with libc.so.6. --no-static-libstdc++ changes how we link against libc.so.6 ? Shouldn't it only affect how we link against libstdc++.so ? Thomas
Hello Thomas, Le 31/05/2020 à 15:08, Thomas Petazzoni a écrit : > On Fri, 29 May 2020 23:48:09 +0200 > Romain Naour <romain.naour@gmail.com> wrote: > >>> If we have to pass this, doesn't it mean that the host tools are built >>> statically ? Why are they built statically ? They really shouldn't be >>> built statically at all. I believe this is what should be fixed, rather >>> than just avoiding specifically from linking statically with libstdc++. >> >> Without this option host tools are built statically because this option is >> enabled by default. > > Can't we remove this, and instead link dynamically the host tools ? Sorry, I don't understand. When --no-static-libstdc++ was added [1], it's default value was "false". It means link statically libstdc++ if --no-static-libstdc++ is not provided on the command line. [1] https://github.com/qt/qtwebengine-chromium/commit/cfab9198a9917f42cf08b1caf84ab9b71aac1911#diff-905c8f054808213577c0a92d1b704615 > >> Adding --no-static-libstdc++ allow to link dynamically with libc.so.6. > > --no-static-libstdc++ changes how we link against libc.so.6 ? Shouldn't > it only affect how we link against libstdc++.so ? Sorry, I meant libstdc++.so here... not libc.so.6. Best regards, Romain > > Thomas >
Romain, All, On 2020-05-24 17:58 +0200, Romain Naour spake thusly: > While cross-compiling, qt5webengine is building a host tool but > want to link the libstdc++ statically. This requires to install > libstdc++-static package on the host (Fedora package name). > > Otherwise the link fail with: > > [185/185] LINK gn > FAILED: gn > /usr/bin/g++ -O3 -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-strip-all -Wl,--as-needed -static-libstdc++ -pthread -o gn -Wl,--start-group tools/gn/gn_main.o base.a gn_lib.a -Wl,--end-group -ldl > /usr/bin/ld : unable to find -lstdc++ > [...] > Project ERROR: GN build error! > > Add --no-static-libstdc++ argument to gn.pro to link to > libstdc++.so.6 instead of libstdc++.a. > > --no-static-libstdc++ has been added by [1] but it force > linking statically by default. > > [1] https://github.com/qt/qtwebengine-chromium/commit/cfab9198a9917f42cf08b1caf84ab9b71aac1911#diff-905c8f054808213577c0a92d1b704615 > > Signed-off-by: Romain Naour <romain.naour@gmail.com> > Cc: Gaël Portay <gael.portay@collabora.com> Applied to master, after rewriting the commit log with the extra details and explanations you provided as replies in the thread. Thanks! :-) Regards, Yann E. MORIN. > --- > ...ro-don-t-link-statically-with-libstc.patch | 51 +++++++++++++++++++ > 1 file changed, 51 insertions(+) > create mode 100644 package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch > > diff --git a/package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch b/package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch > new file mode 100644 > index 0000000000..dff3e6c849 > --- /dev/null > +++ b/package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch > @@ -0,0 +1,51 @@ > +From 7ae73da23ad998bd1e63ad213cf7a02e61191951 Mon Sep 17 00:00:00 2001 > +From: Romain Naour <romain.naour@gmail.com> > +Date: Sat, 23 May 2020 19:01:19 +0200 > +Subject: [PATCH] gn.pro: don't link statically with libstc++ > +MIME-Version: 1.0 > +Content-Type: text/plain; charset=UTF-8 > +Content-Transfer-Encoding: 8bit > + > +While cross-compiling, qt5webengine is building a host tool but > +want to link the libstdc++ statically. This requires to install > +libstdc++-static package on the host (Fedora package name). > + > +Otherwise the link fail with: > + > + [185/185] LINK gn > + FAILED: gn > + /usr/bin/g++ -O3 -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-strip-all -Wl,--as-needed -static-libstdc++ -pthread -o gn -Wl,--start-group tools/gn/gn_main.o base.a gn_lib.a -Wl,--end-group -ldl > + /usr/bin/ld : unable to find -lstdc++ > + [...] > + Project ERROR: GN build error! > + > +Add --no-static-libstdc++ argument to gn.pro to link to > +libstdc++.so.6 instead of libstdc++.a. > + > +--no-static-libstdc++ has been added by [1] but it force > +linking statically by default. > + > +[1] https://github.com/qt/qtwebengine-chromium/commit/cfab9198a9917f42cf08b1caf84ab9b71aac1911#diff-905c8f054808213577c0a92d1b704615 > + > +Signed-off-by: Romain Naour <romain.naour@gmail.com> > +--- > + src/buildtools/gn.pro | 3 ++- > + 1 file changed, 2 insertions(+), 1 deletion(-) > + > +diff --git a/src/buildtools/gn.pro b/src/buildtools/gn.pro > +index 033202e6..5dd8e241 100644 > +--- a/src/buildtools/gn.pro > ++++ b/src/buildtools/gn.pro > +@@ -20,7 +20,8 @@ build_pass|!debug_and_release { > + > + gn_gen_args = --no-last-commit-position --out-path $$out_path \ > + --cc \"$$which($$QMAKE_CC)\" --cxx \"$$which($$QMAKE_CXX)\" \ > +- --ld \"$$which($$QMAKE_LINK)\" > ++ --ld \"$$which($$QMAKE_LINK)\" \ > ++ --no-static-libstdc++ > + > + msvc:!clang_cl: gn_gen_args += --use-lto > + > +-- > +2.25.4 > + > -- > 2.25.4 > > _______________________________________________ > buildroot mailing list > buildroot@busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot
diff --git a/package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch b/package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch new file mode 100644 index 0000000000..dff3e6c849 --- /dev/null +++ b/package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch @@ -0,0 +1,51 @@ +From 7ae73da23ad998bd1e63ad213cf7a02e61191951 Mon Sep 17 00:00:00 2001 +From: Romain Naour <romain.naour@gmail.com> +Date: Sat, 23 May 2020 19:01:19 +0200 +Subject: [PATCH] gn.pro: don't link statically with libstc++ +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +While cross-compiling, qt5webengine is building a host tool but +want to link the libstdc++ statically. This requires to install +libstdc++-static package on the host (Fedora package name). + +Otherwise the link fail with: + + [185/185] LINK gn + FAILED: gn + /usr/bin/g++ -O3 -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-strip-all -Wl,--as-needed -static-libstdc++ -pthread -o gn -Wl,--start-group tools/gn/gn_main.o base.a gn_lib.a -Wl,--end-group -ldl + /usr/bin/ld : unable to find -lstdc++ + [...] + Project ERROR: GN build error! + +Add --no-static-libstdc++ argument to gn.pro to link to +libstdc++.so.6 instead of libstdc++.a. + +--no-static-libstdc++ has been added by [1] but it force +linking statically by default. + +[1] https://github.com/qt/qtwebengine-chromium/commit/cfab9198a9917f42cf08b1caf84ab9b71aac1911#diff-905c8f054808213577c0a92d1b704615 + +Signed-off-by: Romain Naour <romain.naour@gmail.com> +--- + src/buildtools/gn.pro | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/buildtools/gn.pro b/src/buildtools/gn.pro +index 033202e6..5dd8e241 100644 +--- a/src/buildtools/gn.pro ++++ b/src/buildtools/gn.pro +@@ -20,7 +20,8 @@ build_pass|!debug_and_release { + + gn_gen_args = --no-last-commit-position --out-path $$out_path \ + --cc \"$$which($$QMAKE_CC)\" --cxx \"$$which($$QMAKE_CXX)\" \ +- --ld \"$$which($$QMAKE_LINK)\" ++ --ld \"$$which($$QMAKE_LINK)\" \ ++ --no-static-libstdc++ + + msvc:!clang_cl: gn_gen_args += --use-lto + +-- +2.25.4 +
While cross-compiling, qt5webengine is building a host tool but want to link the libstdc++ statically. This requires to install libstdc++-static package on the host (Fedora package name). Otherwise the link fail with: [185/185] LINK gn FAILED: gn /usr/bin/g++ -O3 -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-strip-all -Wl,--as-needed -static-libstdc++ -pthread -o gn -Wl,--start-group tools/gn/gn_main.o base.a gn_lib.a -Wl,--end-group -ldl /usr/bin/ld : unable to find -lstdc++ [...] Project ERROR: GN build error! Add --no-static-libstdc++ argument to gn.pro to link to libstdc++.so.6 instead of libstdc++.a. --no-static-libstdc++ has been added by [1] but it force linking statically by default. [1] https://github.com/qt/qtwebengine-chromium/commit/cfab9198a9917f42cf08b1caf84ab9b71aac1911#diff-905c8f054808213577c0a92d1b704615 Signed-off-by: Romain Naour <romain.naour@gmail.com> Cc: Gaël Portay <gael.portay@collabora.com> --- ...ro-don-t-link-statically-with-libstc.patch | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch