Unsolved How to build Qt on system without a GUI?
-
@Pavel_47 two things please:
- Your last screenshot doesn't seem to show exact error, I guess you should scroll up
- stop posting screenshots, paste text instead (it's easier for others to comment back on any line of output for instance...)
-
The log is huge.
I scrolled up a few hundred lines - nothing that indicatedÅ errors.
Concerning text instead of screenshots - Ok, I took note. -
Run the build with only one process you'll have the error closer.
-
Yes, with one core the the log is more verbose.
Here is what I got at the end:rm -f libcomposeplatforminputcontextplugin.so /home/pavel/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ -mfloat-abi=hard --sysroot=/home/pavel/raspi/sysroot -Wl,--no-undefined -Wl,-O1 -Wl,--enable-new-dtags -Wl,-z,origin -Wl,-rpath,\$ORIGIN/../../lib -Wl,-rpath-link,/home/pavel/raspi/sysroot/opt/vc/lib -Wl,-rpath-link,/home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/home/pavel/raspi/sysroot/lib/arm-linux-gnueabihf -shared -o libcomposeplatforminputcontextplugin.so .obj/qcomposeplatforminputcontextmain.o .obj/qcomposeplatforminputcontext.o .obj/moc_qcomposeplatforminputcontext.o -L=/opt/vc/lib /home/pavel/raspi/qtbase/lib/libQt5Gui.so /home/pavel/raspi/qtbase/lib/libQt5Core.so /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so -lpthread /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so .obj/qcomposeplatforminputcontext.o: In function `QComposeInputContext::~QComposeInputContext()': qcomposeplatforminputcontext.cpp:(.text+0x34): undefined reference to `xkb_compose_state_unref' qcomposeplatforminputcontext.cpp:(.text+0x3c): undefined reference to `xkb_compose_table_unref' .obj/qcomposeplatforminputcontext.o: In function `QComposeInputContext::reset()': qcomposeplatforminputcontext.cpp:(.text+0x80): undefined reference to `xkb_compose_state_reset' .obj/qcomposeplatforminputcontext.o: In function `QComposeInputContext::ensureInitialized()': qcomposeplatforminputcontext.cpp:(.text+0x3bc): undefined reference to `xkb_compose_table_new_from_locale' qcomposeplatforminputcontext.cpp:(.text+0x3d0): undefined reference to `xkb_compose_state_new' .obj/qcomposeplatforminputcontext.o: In function `QComposeInputContext::filterEvent(QEvent const*)': qcomposeplatforminputcontext.cpp:(.text+0x6ac): undefined reference to `xkb_compose_state_feed' qcomposeplatforminputcontext.cpp:(.text+0x6b4): undefined reference to `xkb_compose_state_get_status' qcomposeplatforminputcontext.cpp:(.text+0x6f8): undefined reference to `xkb_compose_state_get_utf8' qcomposeplatforminputcontext.cpp:(.text+0x72c): undefined reference to `xkb_compose_state_get_utf8' collect2: error: ld returned 1 exit status Makefile:247: recipe for target '../../../../plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so' failed make[4]: *** [../../../../plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so] Error 1 make[4]: Leaving directory '/home/pavel/raspi/qtbase/src/plugins/platforminputcontexts/compose' Makefile:47: recipe for target 'sub-compose-make_first' failed make[3]: *** [sub-compose-make_first] Error 2 make[3]: Leaving directory '/home/pavel/raspi/qtbase/src/plugins/platforminputcontexts' Makefile:129: recipe for target 'sub-platforminputcontexts-make_first' failed make[2]: *** [sub-platforminputcontexts-make_first] Error 2 make[2]: Leaving directory '/home/pavel/raspi/qtbase/src/plugins' Makefile:778: recipe for target 'sub-plugins-make_first' failed make[1]: *** [sub-plugins-make_first] Error 2 make[1]: Leaving directory '/home/pavel/raspi/qtbase/src' Makefile:50: recipe for target 'sub-src-make_first' failed make: *** [sub-src-make_first] Error 2
Seem that problem is still related to xkb staff ...
-
@Pavel_47 said in How to build Qt on system without a GUI?:
undefined reference to `xkb_compose_state_get_utf8'
You're not linking against xkb lib
-
So, problems in Makefile ?
-
@Pavel_47 Try
file /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so
and post the output here.
-
here it is:
pavel@ALABAMA:~/raspi/qtbase$ file ~/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so: symbolic link to libxkbcommon.so.0.0.0
-
@Pavel_47 Then please do
file /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0
-
pavel@ALABAMA:~/raspi/qtbase$ file ~/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0 /home/pavel/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0: cannot open `/home/pavel/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0' (No such file or directory)
-
@Pavel_47 said in How to build Qt on system without a GUI?:
I've just checked libxkbcommon-dev and libxkbcommon-x11-dev on RPi.
So sync them to your sysroot in the host PC!
As on Ubuntu they are installed and are newest versions.
Forget about that, it doesn't matter.
For cross-compilation you need your libraries + headers installed properly in target device (RPi), then copy (synchronize) some folders from your target device into the sysroot folder in your host PC (with Ubuntu) and only then attempt to build (Qt framework, modules, your application).
Please take a look at this guide for cross-compiling Qt for RPi
-
@Pablo-J-Rogina said in How to build Qt on system without a GUI?:
Please take a look at this guide for cross-compiling Qt for RPi
I proceeded exactly as described on the page you mentioned.
Sure I performed the resync with RPi -
@Pavel_47 said in How to build Qt on system without a GUI?:
Sure I performed the resync with RPi
I'm not going to argue in contrary, so your next task is to figure out why even having rsync'd the file is missing from your sysroot folder...
/home/pavel/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0: cannot open
-
The file isn't missing. It's there:
-
The file isn't missing. It's there:
Well, it's somewhere else but not in the expected location it seems...
/home/pavel/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0
is different from the location in your last post (again, please stop posting screenshots!)
/home/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0
-
Sorry, I've been mistaken while executing:
file /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0the correct result is here:
pavel@ALABAMA:~/raspi/qtbase$ file ~/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0 /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=ca40d4cec17c0cb8d6a85dcefc44fc89ac706d41, stripped
-
I contacted Ran Benita, the developer of xkbcommon package, and exposed him the problem. After some checks on my system, here is his conclusion:
"The version of libxkbcommon you have in your arm-linux-gnueabihf raspi/sysroot is very very old. Qt requires a newer version. You should update your cross-compilation environment to something more recent."
Where /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so comes from ?
-
@Pavel_47 said in How to build Qt on system without a GUI?:
Where /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so comes from ?
From your Raspberry Pi when you're syncing it...
What exact OS (including version) do you run on it? -
uname -a
Linux raspberry 4.9.77-v7+cat /etc/os-release
Raspian GNU/Linux 8 (jessie) -
@Pavel_47 You can try to upgrade to current Raspbian version and then recreate your sysroot.