[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