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

Christian Gagneraud chgans at gmail.com
Sun Aug 27 03:25:16 CEST 2017


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.

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