[Interest] Link error while building Qt/32 on Linux 64 bits

Christian Gagneraud chgans at gmail.com
Sun Aug 27 03:41:04 CEST 2017


On 27 August 2017 at 13:25, Christian Gagneraud <chgans at gmail.com> wrote:
> Hi there,
>
> I'm trying to build a 32 bits version of Qt on a 64 bits Linux machine
> (KUbuntu 17.04).
>
> At the very beginning i wouldn't even pass the bootstrapping of Qt. So
> i installed all the 'lib32' packages (eg, lib32stdc++, ...) and some
> i386 version of the build dependencies listed on Qt Wiki.
>
> I can now pass the configure stage, but the build fails while linking
> libQt5XcbQpa.

BTW, at this stage i built successfully quite a few Qt modules:
krys at krys-pc:~/Projects/qt5$ find . -name 'libQt*.so'
./qtbase/lib/libQt5OpenGL.so
./qtbase/lib/libQt5Xml.so
./qtbase/lib/libQt5Network.so
./qtbase/lib/libQt5Gui.so
./qtbase/lib/libQt5Test.so
./qtbase/lib/libQt5DBus.so
./qtbase/lib/libQt5Concurrent.so
./qtbase/lib/libQt5Core.so
./qtbase/lib/libQt5PrintSupport.so
./qtbase/lib/libQt5Sql.so
./qtbase/lib/libQt5Widgets.so

So my setup cannot be that bad...

Chris

>
> See below for details. I wonder if i need to pass in some CFLAGS,
> CXXFLAGS, LDFLAGS to ./configure
>
> Any help appreciated. Thanks,
> Chris
>
>
> The error is:
> g++ -m32 -Wl,--no-undefined -Wl,--version-script,QtXcbQpa.version
> -Wl,-O1 -fuse-ld=gold -Wl,--enable-new-dtags
> -Wl,-rpath,/home/krys/Projects/qt5/qtbase/lib -shared
> -Wl,-Bsymbolic-functions -Wl,-soname,libQt5XcbQpa.so.5 -o
> libQt5XcbQpa.so.5.9.0 .obj/qxcbclipboard.o .obj/qxcbconnection.o
> .obj/qxcbintegration.o .obj/qxcbkeyboard.o .obj/qxcbmime.o
> .obj/qxcbdrag.o .obj/qxcbscreen.o .obj/qxcbwindow.o
> .obj/qxcbbackingstore.o .obj/qxcbwmsupport.o
> .obj/qxcbnativeinterface.o .obj/qxcbcursor.o .obj/qxcbimage.o
> .obj/qxcbxsettings.o .obj/qxcbsystemtraytracker.o
> .obj/qxcbconnection_xi2.o .obj/qxcbsessionmanager.o
> .obj/qxcbglintegrationfactory.o .obj/qxcbglintegration.o
> .obj/qxcbnativeinterfacehandler.o .obj/atom.o .obj/xkb-compat.o
> .obj/context.o .obj/xkb-keymap.o .obj/keysym.o .obj/keysym-utf.o
> .obj/state.o .obj/text.o .obj/context-priv.o .obj/keymap-priv.o
> .obj/utils.o .obj/utf8.o .obj/action.o .obj/ast-build.o .obj/compat.o
> .obj/expr.o .obj/include.o .obj/keycodes.o .obj/keymap-dump.o
> .obj/keymap.o .obj/keywords.o .obj/rules.o .obj/scanner.o
> .obj/symbols.o .obj/types.o .obj/vmod.o .obj/xkbcomp.o .obj/parser.o
> .obj/util.o .obj/x11-keymap.o .obj/x11-state.o
> .obj/moc_qxcbconnection.o .obj/moc_qxcbmime.o
> .obj/moc_qxcbnativeinterface.o .obj/moc_qxcbsystemtraytracker.o
> .obj/moc_qxcbglintegrationplugin.o  -lxcb-xinerama
> -L/home/krys/Projects/qt5/qtbase/lib -lQt5ServiceSupport
> -lQt5ThemeSupport -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport
> -lfontconfig -lfreetype -lQt5LinuxAccessibilitySupport
> -lQt5AccessibilitySupport -lGL -lQt5Gui -lQt5DBus -lQt5Core -lpthread
> -lX11 -lX11-xcb -lXi -lSM -lICE -lxcb-xkb -lxcb-render-util
> -lxcb-render -lxcb -lxcb-shm -lxcb-sync -lxcb-xfixes -lxcb-randr
> -lxcb-image -lxcb-keysyms -lxcb-icccm -lxcb-shape -lGL
> /usr/bin/ld.gold: warning: skipping incompatible
> //usr/lib/x86_64-linux-gnu/libSM.so while searching for SM
> /usr/bin/ld.gold: error: cannot find -lSM
> /usr/bin/ld.gold: warning: skipping incompatible
> //usr/lib/x86_64-linux-gnu/libICE.so while searching for ICE
> /usr/bin/ld.gold: error: cannot find -lICE
> .obj/qxcbsessionmanager.o:qxcbsessionmanager.cpp:function
> QXcbSessionManager::~QXcbSessionManager(): error: undefined reference
> to 'SmcCloseConnection'
> .obj/qxcbsessionmanager.o:qxcbsessionmanager.cpp:function
> QXcbSessionManager::release(): error: undefined reference to
> 'SmcInteractDone'
> .obj/qxcbsessionmanager.o:qxcbsessionmanager.cpp:function
> sm_setProperty(char const*, char const*, int, SmPropValue*) [clone
> .part.2]: error: undefined reference to 'SmcSetProperties'
> .obj/qxcbsessionmanager.o:qxcbsessionmanager.cpp:function
> QSmSocketReceiver::socketActivated(int): error: undefined reference to
> 'SmcGetIceConnection'
> .obj/qxcbsessionmanager.o:qxcbsessionmanager.cpp:function
> QSmSocketReceiver::socketActivated(int): error: undefined reference to
> 'IceProcessMessages'
> .obj/qxcbsessionmanager.o:qxcbsessionmanager.cpp:function
> QXcbSessionManager::QXcbSessionManager(QString const&, QString
> const&): error: undefined reference to 'SmcOpenConnection'
> .obj/qxcbsessionmanager.o:qxcbsessionmanager.cpp:function
> QXcbSessionManager::QXcbSessionManager(QString const&, QString
> const&): error: undefined reference to 'SmcGetIceConnection'
> .obj/qxcbsessionmanager.o:qxcbsessionmanager.cpp:function
> QXcbSessionManager::QXcbSessionManager(QString const&, QString
> const&): error: undefined reference to 'IceConnectionNumber'
> .obj/qxcbsessionmanager.o:qxcbsessionmanager.cpp:function
> sm_setProperty(QString const&, QStringList const&): error: undefined
> reference to 'SmcDeleteProperties'
> .obj/qxcbsessionmanager.o:qxcbsessionmanager.cpp:function
> sm_performSaveYourself(QXcbSessionManager*): error: undefined
> reference to 'SmcInteractDone'
> .obj/qxcbsessionmanager.o:qxcbsessionmanager.cpp:function
> sm_performSaveYourself(QXcbSessionManager*): error: undefined
> reference to 'SmcSaveYourselfDone'
> .obj/qxcbsessionmanager.o:qxcbsessionmanager.cpp:function
> sm_performSaveYourself(QXcbSessionManager*): error: undefined
> reference to 'SmcInteractDone'
> .obj/qxcbsessionmanager.o:qxcbsessionmanager.cpp:function
> sm_performSaveYourself(QXcbSessionManager*): error: undefined
> reference to 'SmcRequestSaveYourselfPhase2'
> .obj/qxcbsessionmanager.o:qxcbsessionmanager.cpp:function
> QXcbSessionManager::allowsInteraction(): error: undefined reference to
> 'SmcInteractRequest'
> .obj/qxcbsessionmanager.o:qxcbsessionmanager.cpp:function
> QXcbSessionManager::allowsErrorInteraction(): error: undefined
> reference to 'SmcInteractRequest'
> collect2: error: ld returned 1 exit status
> Makefile.xcb_qpa_lib:347: recipe for target
> '../../../../lib/libQt5XcbQpa.so.5.9.0' failed
> make[6]: *** [../../../../lib/libQt5XcbQpa.so.5.9.0] Error 1
> make[6]: Leaving directory
> '/home/krys/Projects/qt5/qtbase/src/plugins/platforms/xcb'
> [...]
>
> I have installed the i386 packages for libSM and libICE using "apt-get
> install libsm6:i386 libice6:i386":
>
> krys at krys-pc:~/Projects/qt5$ ls -l /usr/lib/i386-linux-gnu/libSM*
> lrwxrwxrwx 1 root root    14 Jul 13  2014
> /usr/lib/i386-linux-gnu/libSM.so.6 -> libSM.so.6.0.1
> -rw-r--r-- 1 root root 30164 Jul 13  2014 /usr/lib/i386-linux-gnu/libSM.so.6.0.1
> krys at krys-pc:~/Projects/qt5$ ls -l /usr/lib/i386-linux-gnu/libICE*
> lrwxrwxrwx 1 root root    15 Jul 13  2014
> /usr/lib/i386-linux-gnu/libICE.so.6 -> libICE.so.6.3.0
> -rw-r--r-- 1 root root 92396 Jul 13  2014
> /usr/lib/i386-linux-gnu/libICE.so.6.3.0
>
> But as can be seen above, the linker doesn't seem to look for SO in
> this directory and instead look into /usr/lib/x86_64-linux-gnu.
>
> I don't think my environment is mis-leading the build:
> krys at krys-pc:~/Projects/qt5$ env | grep PATH
> KICAD_PATH=/usr/share/kicad
> MANDATORY_PATH=/usr/share/gconf//usr/share/xsessions/plasma.mandatory.path
> DEFAULTS_PATH=/usr/share/gconf//usr/share/xsessions/plasma.default.path
> XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
> XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session2
> PATH=/opt/Qt/Tools/QtCreator/bin:/opt/QtInstallerFramework/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
> krys at krys-pc:~/Projects/qt5$ env | grep LD
> OLDPWD=/home/krys/Projects/qt5/qtbase
> krys at krys-pc:~/Projects/qt5$ env | grep CC
> QT_ACCESSIBILITY=1
> QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
> krys at krys-pc:~/Projects/qt5$ env | grep CXX
> krys at krys-pc:~/Projects/qt5$ env | grep QT
> QT_ACCESSIBILITY=1
> QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
> QT_AUTO_SCREEN_SCALE_FACTOR=0
> krys at krys-pc:~/Projects/qt5$
>
>
> Qt was configured with:
> ./configure -developer-build -opensource -nomake examples -release
> -platform linux-g++-32
>
> Qt configure test run and summary:
> Running configuration tests...
> Checking for gold linker... yes
> Checking for machine tuple... yes
> Checking for valid makespec... yes
> Checking for alloca()... yes
> Checking for target architecture... i386
> Checking for SSE2 instructions... yes
> Checking for SSE3 instructions... yes
> Checking for SSSE3 instructions... yes
> Checking for SSE4.1 instructions... yes
> Checking for SSE4.2 instructions... yes
> Checking for AVX instructions... yes
> Checking for AVX2 instructions... yes
> Checking for AVX512 F instructions... yes
> Checking for AVX512 BW instructions... yes
> Checking for AVX512 CD instructions... yes
> Checking for AVX512 DQ instructions... yes
> Checking for AVX512 ER instructions... yes
> Checking for AVX512 IFMA instructions... yes
> Checking for AVX512 PF instructions... yes
> Checking for AVX512 VBMI instructions... yes
> Checking for AVX512 VL instructions... yes
> Checking for C++14 support... yes
> Checking for C++1z support... yes
> Checking for pkg-config... yes
> Checking for D-Bus >= 1.2... yes
> Checking for new dtags support... yes
> Checking for F16C instructions... yes
> Checking for D-Bus >= 1.2 (host)... yes
> Checking for udev... yes
> Checking for mremap()... yes
> Checking for POSIX fallocate()... yes
> Checking for precompiled header support... yes
> Checking for symbol visibility support... yes
> Checking for -Bsymbolic-functions support... yes
> Checking for STL compatibility... yes
> Checking for zlib... yes
> Checking for clock_gettime()... yes
> Checking for POSIX monotonic clock... yes
> Checking for dlopen()... yes
> Checking for eventfd... yes
> Checking for GLib... no
> Checking for POSIX iconv... yes
> Checking for ICU... yes
> Checking for inotify... yes
> Checking for SysV IPC... yes
> Checking for 64 bit atomics... yes
> Checking for ppoll()... yes
> Checking for slog2... no
> Checking for DoubleConversion... no
> Checking for PCRE2... no
> Checking for O_CLOEXEC... yes
> Checking for working std::atomic for function pointers... yes
> Checking for getaddrinfo()... yes
> Checking for getifaddrs()... yes
> Checking for IPv6 ifname... yes
> Checking for OpenSSL Headers... yes
> Checking for DB2 (IBM)... no
> Checking for InterBase... no
> Checking for MySQL... no
> Checking for OCI (Oracle)... no
> Checking for ODBC... no
> Checking for PostgreSQL... no
> Checking for SQLite (version 2)... no
> Checking for TDS (Sybase)... no
> Checking for XCB >= 1.5 (core)... yes
> Checking for Desktop OpenGL... yes
> Checking for EGL... no
> Checking for evdev... yes
> Checking for FreeType... yes
> Checking for Fontconfig... yes
> Checking for GBM... no
> Checking for KMS... yes
> Checking for libinput... no
> Checking for LinuxFB... yes
> Checking for mtdev... no
> Checking for OpenVG... no
> Checking for default QPA platform... xcb
> Checking for HarfBuzz... no
> Checking for libjpeg... no
> Checking for libpng... yes
> Checking for XCB (secondary)... yes
> Checking for tslib... no
> Checking for X11 prefix... /usr
> Checking for XCB GLX... yes
> Checking for XCB XRender... yes
> Checking for X11 session management... yes
> Checking for XCB Xlib... yes
> Checking for Xinput2... yes
> Checking for XCB XKB >= 1.10... yes
> Checking for xkbcommon-x11 >= 0.4.1... no
> Checking for XKB config root... /usr/share/X11/xkb
> Checking for xkbcommon... no
> Checking for XLib... yes
> Checking for CUPS... no
> Checking for Socket CAN... yes
> Checking for Socket CAN FD... yes
> Checking for Direct3D 12... no
> Checking for SDL2... no
> Checking for Assimp... no
> Checking for Autodesk FBX... no
> Checking for Wayland client library... no
> Checking for Wayland EGL library... no
> Checking for wayland-server... no
> Checking for BlueZ... no
> Checking for sensorfw... no
> Checking for ALSA... yes
> Checking for GStreamer 1.0... no
> Checking for GStreamer 0.10... no
> Checking for Video for Linux... yes
> Checking for OpenAL... no
> Checking for PulseAudio >= 0.9.10... no
> Checking for libresourceqt5... no
> Checking for Gypsy... no
> Checking for WinRT Geolocation API... no
> Checking for ALSA... yes
> Checking for embedded... no
> Checking for PulseAudio >= 0.9.10... yes
> Checking for system ninja... no
> Checking for opus... no
> Checking for libwebp and libwebpdemux... yes
> Done running configuration tests.
>
> Configure summary:
>
> Build type: linux-g++-32 (i386, CPU features: <none>)
> Configuration: use_gold_linker sse2 sse3 ssse3 sse4_1 sse4_2 avx avx2
> avx512f avx512bw avx512cd avx512dq avx512er avx512ifma avx512pf
> avx512vbmi avx512vl compile_examples enable_new_dtags f16c
> headersclean largefile precompile_header warnings_are_errors
> private_tests shared rpath release c++11 c++14 c++1z concurrent dbus
> mremap reduce_exports reduce_relocations stl
> Build options:
>   Mode ................................... release
>   Building shared libraries .............. yes
>   Using C++ standard ..................... C++1z
>   Using gold linker ...................... yes
>   Using new DTAGS ........................ yes
>   Using precompiled headers .............. yes
>   Using LTCG ............................. no
>   Target compiler supports:
>     SSE .................................. SSE2 SSE3 SSSE3 SSE4.1 SSE4.2
>     AVX .................................. AVX AVX2 F16C
>     AVX512 ............................... F ER CD PF DQ BW VL IFMA VBMI
>   Build parts ............................ libs tests tools
> Qt modules and options:
>   Qt Concurrent .......................... yes
>   Qt D-Bus ............................... yes
>   Qt D-Bus directly linked to libdbus .... yes
>   Qt Gui ................................. yes
>   Qt Network ............................. yes
>   Qt Sql ................................. yes
>   Qt Testlib ............................. yes
>   Qt Widgets ............................. yes
>   Qt Xml ................................. yes
> Support enabled for:
>   Using pkg-config ....................... yes
>   QML debugging .......................... yes
>   udev ................................... yes
>   Using system zlib ...................... yes
> Qt Core:
>   DoubleConversion ....................... yes
>     Using system DoubleConversion ........ no
>   GLib ................................... no
>   iconv .................................. no
>   ICU .................................... yes
>   Logging backends:
>     journald ............................. no
>     syslog ............................... no
>     slog2 ................................ no
>   Using system PCRE2 ..................... no
> Qt Network:
>   getaddrinfo() .......................... yes
>   getifaddrs() ........................... yes
>   IPv6 ifname ............................ yes
>   libproxy ............................... no
>   OpenSSL ................................ yes
>     Qt directly linked to OpenSSL ........ no
>   SCTP ................................... no
>   Use system proxies ..................... yes
> Qt Sql:
>   DB2 (IBM) .............................. no
>   InterBase .............................. no
>   MySql .................................. no
>   OCI (Oracle) ........................... no
>   ODBC ................................... no
>   PostgreSQL ............................. no
>   SQLite2 ................................ no
>   SQLite ................................. yes
>     Using system provided SQLite ......... no
>   TDS (Sybase) ........................... no
> Qt Gui:
>   Accessibility .......................... yes
>   FreeType ............................... yes
>     Using system FreeType ................ yes
>   HarfBuzz ............................... yes
>     Using system HarfBuzz ................ no
>   Fontconfig ............................. yes
>   Image formats:
>     GIF .................................. yes
>     ICO .................................. yes
>     JPEG ................................. yes
>       Using system libjpeg ............... no
>     PNG .................................. yes
>       Using system libpng ................ yes
>   EGL .................................... no
>   OpenVG ................................. no
>   OpenGL:
>     Desktop OpenGL ....................... yes
>     OpenGL ES 2.0 ........................ no
>     OpenGL ES 3.0 ........................ no
>     OpenGL ES 3.1 ........................ no
>   Session Management ..................... yes
> Features used by QPA backends:
>   evdev .................................. yes
>   libinput ............................... no
>   mtdev .................................. no
>   tslib .................................. no
>   xkbcommon-evdev ........................ no
> QPA backends:
>   DirectFB ............................... no
>   EGLFS .................................. no
>   LinuxFB ................................ yes
>   VNC .................................... yes
>   Mir client ............................. no
>   X11:
>     Using system provided XCB libraries .. yes
>     EGL on X11 ........................... no
>     Xinput2 .............................. yes
>     XCB XKB .............................. yes
>     XLib ................................. yes
>     XCB render ........................... yes
>     XCB GLX .............................. yes
>     XCB Xlib ............................. yes
>     Using system-provided xkbcommon ...... no
> Qt Widgets:
>   GTK+ ................................... no
>   Styles ................................. Fusion Windows
> Qt PrintSupport:
>   CUPS ................................... no
> Qt SerialBus:
>   Socket CAN ............................. yes
>   Socket CAN FD .......................... yes
> QtXmlPatterns:
>   XML schema support ..................... yes
> Qt QML:
>   QML interpreter ........................ yes
>   QML network support .................... yes
> Qt Quick:
>   Direct3D 12 ............................ no
>   AnimatedImage item ..................... yes
>   Canvas item ............................ yes
>   Support for Quick Designer ............. yes
>   Flipable item .......................... yes
>   GridView item .......................... yes
>   ListView item .......................... yes
>   Path support ........................... yes
>   PathView item .......................... yes
>   Positioner items ....................... yes
>   ShaderEffect item ...................... yes
>   Sprite item ............................ yes
> Qt Gamepad:
>   SDL2 ................................... no
> Qt 3D:
>   Assimp ................................. yes
>   System Assimp .......................... no
>   Output Qt3D Job traces ................. no
>   Output Qt3D GL traces .................. no
> Qt 3D GeometryLoaders:
>   Autodesk FBX ........................... no
> Qt Wayland Client ........................ no
> Qt Wayland Compositor .................... no
> Qt Bluetooth:
>   BlueZ .................................. no
>   BlueZ Low Energy ....................... no
>   Linux Crypto API ....................... no
> Qt Sensors:
>   sensorfw ............................... no
> Qt Multimedia:
>   ALSA ................................... yes
>   GStreamer 1.0 .......................... no
>   GStreamer 0.10 ......................... no
>   Video for Linux ........................ yes
>   OpenAL ................................. no
>   PulseAudio ............................. no
>   Resource Policy (libresourceqt5) ....... no
>   Windows Audio Services ................. no
>   DirectShow ............................. no
>   Windows Media Foundation ............... no
> Qt Quick Controls 2:
>   Styles ................................. Default Material Universal
> Qt Quick Templates 2:
>   Hover support .......................... yes
> Qt Location:
>   Gypsy GPS Daemon ....................... no
>   WinRT Geolocation API .................. no
> Qt WebEngine:
>   Embedded build ......................... no
>   Optimize for size ...................... no
>   Pepper Plugins ......................... yes
>   Printing and PDF ....................... yes
>   Proprietary Codecs ..................... no
>   Spellchecker ........................... yes
>   WebRTC ................................. yes
>   Using system ninja ..................... no
>   ALSA ................................... yes
>   PulseAudio ............................. yes
>   System libraries:
>     libwebp and libwebpdemux ............. yes
>     Opus ................................. no
>     ffmpeg ............................... no
>
> Note: No wayland-egl support detected. Cross-toolkit compatibility disabled.
>
> Qt is now configured for building. Just run 'make'.
> Once everything is built, Qt is installed.
> You should NOT run 'make install'.
> Note that this build cannot be deployed to other machines or devices.
>
> Prior to reconfiguration, make sure you remove any leftovers from
> the previous build.



More information about the Interest mailing list