identifier-target/bin directory does not contain important binaries...?
-
I am building an app for an embedded device.
I am compiling the Qt Libraries myself with:
./configure -opensource -confirm-license -verbose -pkg-config -no-use-gold-linker -device linux-nuc-g++ -device-option CROSS_COMPILE=/usr/bin/ -kms -gbm -sysroot / -system-freetype -fontconfig -skip webengine -verbose -recheck-all -make libs -prefix /usr/ -extprefix /opt/myapp-target -hostprefix /opt/myapp-host -qt-zlib -qt-libjpeg -qt-libpng -no-feature-bearermanagement -no-xcb -no-xcb-xlib -no-xkbcommon -no-xcb-xinput -no-linuxfb
When I do this, I noticed that the myapp-target/bin folder does not contain the binaries for qmlimportscanner, lconvert, and several others. What is the correct method to access these binaries in this situation?
They do exist in /opt/myapp-host/bin.
Because both my host and target are running Ubuntu 18.04, I am assuming that I can just simlink to them, but I know sometimes paths can be hardcoded, etc.
Or is there a better solution? Perhaps there is an additional flag I could pass to configure to have it compile the additional tools? (I looked, but didn't see anything obvious)
-
Hi,
Which version of Qt are you cross-compiling ?
-
I remember some of these host tools will not get built when cross-compiling however something looks strange in your configuration line. What CPU does your target use ?
-
Why are you cross-compiling Qt since your target machine is an x86_64 which I suspect is the same as your development machine ?
If you want a reduced set of feature, just do a normal build removing them. -
That is a good question and one I had not considered.
You are correct, the host machine is an x86_64 as well. There is no need to maintain a -host & -target setup for this situation.
I still find it odd that some tools were not built and installed into -target.
-
There are host tools that might be disabled due to the reduced functionality of your build.
Also, when cross-compiling it would not make sense to build applications like designer because it would require to build some of the Qt modules for both the host and target which is not something you aim for when cross-compiling. Usually you have your desktop Qt build that has everything and then your cross-compiled version that has only the necessary tools to build the applications/libraries.