Bug 246161
Summary: | Fails to build to build on glibc versions less than 2.34 due to libdl link order | ||
---|---|---|---|
Product: | WebKit | Reporter: | oreo6391 |
Component: | CMake | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | Normal | ||
Priority: | P2 | ||
Version: | WebKit Nightly Build | ||
Hardware: | PC | ||
OS: | Linux |
oreo6391
When trying to build the latest main commit of WebKit on a machine using glibc 2.32, I get the following linker error:
[3008/3014] Linking CXX executable bin/MiniBrowser
FAILED: bin/MiniBrowser
: && /usr/bin/g++ -fdiagnostics-color=always -Wextra -Wall -pipe -fmax-errors=20 -Wno-odr -Wno-stringop-overflow -Wno-nonnull -Wno-array-bounds -Wno-expansion-to-defined -Wno-noexcept-type -Wno-psabi -Wno-misleading-indentation -Wno-maybe-uninitialized -Wwrite-strings -Wundef -Wpointer-arith -Wmissing-format-attribute -Wformat-security -Wcast-align -Wno-tautological-compare -DNDEBUG -fstack-clash-protection -D_FORTIFY_SOURCE=2 -mtune=generic -O2 -DNDEBUG -fdebug-prefix-map=/builddir/WebKit-c26298eec7436f5d085afa3a364db526f6d428fe/build=. -fno-strict-aliasing -fno-exceptions -fno-rtti -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -Wl,--disable-new-dtags Tools/MiniBrowser/gtk/CMakeFiles/MiniBrowser.dir/__/__/__/MiniBrowser/DerivedSources/BrowserMarshal.c.o Tools/MiniBrowser/gtk/CMakeFiles/MiniBrowser.dir/BrowserCellRendererVariant.c.o Tools/MiniBrowser/gtk/CMakeFiles/MiniBrowser.dir/BrowserDownloadsBar.c.o Tools/MiniBrowser/gtk/CMakeFiles/MiniBrowser.dir/BrowserSearchBox.c.o Tools/MiniBrowser/gtk/CMakeFiles/MiniBrowser.dir/BrowserSettingsDialog.c.o Tools/MiniBrowser/gtk/CMakeFiles/MiniBrowser.dir/BrowserTab.c.o Tools/MiniBrowser/gtk/CMakeFiles/MiniBrowser.dir/BrowserWindow.c.o Tools/MiniBrowser/gtk/CMakeFiles/MiniBrowser.dir/main.c.o -o bin/MiniBrowser /usr/lib64/libglib-2.0.so /usr/lib64/libsoup-3.0.so /usr/lib64/libgstreamer-1.0.so lib/libwebkit2gtk-4.1.so.0.3.0 /usr/lib64/libWPEBackend-fdo-1.0.so /usr/lib64/libgtk-3.so /usr/lib64/libgdk-3.so /usr/lib64/libz.so /usr/lib64/libpangocairo-1.0.so /usr/lib64/libpango-1.0.so /usr/lib64/libharfbuzz.so /usr/lib64/libatk-1.0.so /usr/lib64/libcairo-gobject.so /usr/lib64/libcairo.so /usr/lib64/libgdk_pixbuf-2.0.so lib/libjavascriptcoregtk-4.1.so.0.3.0 /usr/lib/libicudata.so /usr/lib/libicui18n.so /usr/lib/libicuuc.so -latomic -lpthread /usr/lib64/libxml2.so /usr/lib64/libsqlite3.so /usr/lib64/libxslt.so /usr/lib64/libOpenGL.so /usr/lib64/libGLX.so /usr/lib64/libEGL.so lib/libGLESv2.a -ldl lib/libANGLE.a /usr/lib64/liblcms2.so /usr/lib/libwoff2dec.so lib/libxdgmime.a /usr/lib/libcairo.so /usr/lib64/libfontconfig.so /usr/lib/libfreetype.so /usr/lib64/libharfbuzz.so /usr/lib64/libharfbuzz-icu.so /usr/lib64/libgcrypt.so /usr/lib64/libgpg-error.so /usr/lib64/libgstallocators-1.0.so /usr/lib64/libgstapp-1.0.so /usr/lib64/libgstbase-1.0.so /usr/lib64/libgstreamer-1.0.so /usr/lib64/libgstpbutils-1.0.so /usr/lib64/libgstaudio-1.0.so /usr/lib64/libgsttranscoder-1.0.so /usr/lib64/libgsttag-1.0.so /usr/lib64/libgstvideo-1.0.so /usr/lib64/libgstgl-1.0.so /usr/lib64/libgstfft-1.0.so /usr/lib64/libsoup-3.0.so /usr/lib/libjpeg.so /usr/lib/libpng.so /usr/lib/libz.so /usr/lib/libopenjp2.so /usr/lib64/libwebpdemux.so /usr/lib64/libwebp.so /usr/lib64/libenchant-2.so /usr/lib64/libgio-2.0.so /usr/lib64/libgmodule-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libglib-2.0.so -lsecret-1 -lgio-2.0 -lgobject-2.0 -lglib-2.0 /usr/lib64/libtasn1.so /usr/lib/libhyphen.so /usr/lib/libX11.so /usr/lib/libXcomposite.so /usr/lib/libXdamage.so /usr/lib/libXrender.so /usr/lib/libXt.so -lwayland-server -lwayland-egl -lwayland-client /usr/lib64/libwpe-1.0.so /usr/lib64/libmanette-0.2.so /usr/lib64/libseccomp.so /usr/lib64/libgbm.so /usr/lib64/libdrm.so && :
/usr/bin/ld: lib/../Source/ThirdParty/ANGLE/CMakeFiles/ANGLE.dir/src/common/system_utils_posix.cpp.o: undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
/usr/bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/libdl.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
This occurs because ${CMAKE_DL_LIBS} is missing here, which results in a link order error: https://github.com/WebKit/WebKit/blob/d257ea20c5996ada3c009a6a2f4a639f92c0e2ca/Source/ThirdParty/ANGLE/CMakeLists.txt#L145
This doesn't affect newer version of glibc because libdl was merged into the libc.
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
oreo6391
Pull request: https://github.com/WebKit/WebKit/pull/5101
EWS
Committed 255257@main (8e3030cb0e45): <https://commits.webkit.org/255257@main>
Reviewed commits have been landed. Closing PR #5101 and removing active labels.