Error message when running qmake -spec linux-g++-32
Hello friends, I want to ask
Why when I run qmake -spec linux-g++-32 command that there is an error? is there a library that is lacking or what? if there are libraries that are less I have to install the library of what is needed?
Error the following message:
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libQt5Widgets.so when searching for -lQt5Widgets
/usr/bin/ld: cannot find -lQt5Widgets
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libQt5Gui.so when searching for -lQt5Gui
/usr/bin/ld: cannot find -lQt5Gui
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libQt5Core.so when searching for -lQt5Core
/usr/bin/ld: cannot find -lQt5Core
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libGL.so when searching for -lGL
/usr/bin/ld: cannot find -lGL
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libpthread.so when searching for -lpthread
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libpthread.a when searching for -lpthread
collect2: ld returned 1 exit status
make: *** [untitled2] Error 1
It looks like you have Qt x86_64 installed but try to build for X86.
I will need to install Qt built for X86.
@jsulm How to build x86 how?
As I sad you need to install x86 Qt first and then use its qmake:
/path/to/qt_x86/bin/qmake -spec linux-g++-32
Why do you want to build for x86? Your system seems to be x86_64.
@jsulm I have a duty to make cross-compile from 64bit to 32bit. So I asked. I was confused when cross-compiling, the problem is I do not know what to prepare for. From some of my reference when searching, I have installed these libraries they recommend to cross compile, but in reality it does not help at all.
You need x86 compiler (how to install depends on your Linux distribution, on Ubuntu 14.04 it is g++-4.8:i386) and x86 Qt (http://download.qt.io/official_releases/qt/5.5/5.5.1/qt-opensource-linux-x86-5.5.1.run) and probably some other libraries as x86.
As alternative you can set up an x86 Linux either directly on a PC or in a virtual machine, then install Qt there.
@jsulm If after I installed it, I was able to use it? What else might need libraries?
If you installed it try to build your application and see what happens.
I don't know which other libraries may be needed. You will see it if you build/run your application.
One tip: if you're using Ubuntu then you should install build-essential:i386 package.
@jsulm What has the build-essential depends? If it has anything to be installed?
Before asking such questions you actually could just try to install the package:
apt-get install build-essential:i386
You can use -s parameter to see what is going to happen if you install the package without installing it:
apt-get install -s build-essential:i386
@jsulm To be honest, I've never tried to install it, but it is not installed, which I can only notification. The following notification that I can:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
build-essential:i386 : Depends: libc6-dev:i386 but it is not going to be installed or
Depends: gcc:i386 (>= 4:4.4.3) but it is not going to be installed
Depends: g++:i386 (>= 4:4.4.3) but it is not going to be installed
Depends: make:i386 but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
OK. Forget it.
I'm not sure why but if you try to install it (or g++ for x86) then the package manager wants to remove x86_64 version!
This is really bad, it should be possible to install both version in parallel but it isn't.
So, probably it will be easier to install a x86 Ubuntu (for example in a virtual machine).
@jsulm Lol, then do not make it more complicated? Complicated in the sense should be used only to compile the first virtual course?
What do you mean by "compile the first virtual course"?
@Renn Sorry, I typo. I mean if you want to build the binary 32bit it must use a virtual machine.
Well, you don't have to use a virtual machine, but then you have to set up x86 development environment on your x86_64 machine.
@jsulm The point?
The point is: either you use a x86 Linux to build your application for x86 or you have to set up x86 compiler and x86 Qt on your x86_64 machine.