Qt 5.7 Coss-Compile with Raspberry Pi 3
-
@ascnp Why did you install the dev packages in /usr/local? I'm not sure whether configure looks there by default. You can try to pass these directories to configure, or even better install the packages in their default locations.
-
@jsulm
you mean /usr/lib? Actually, I am not quite sure where should I install tslib. I have tried to copy all tslib file to /usr/lib, but it didn't work. But my gstreamer1.0 is install by apt-get. Qt also can't find gstreamer. That don't make sense. -
@ascnp said in QT5.7 Coss-Compile with Raspberry Pi 3:
gstreamer1.0-nice (0.1.13-0ubuntu2)
gstreamer1.0-pocketsphinx (0.8.0+real5prealpha-1ubuntu2)
gstreamer1.0-alsa (1.8.2-1ubuntu0.1)
...I have no experience with rpi, but why do you have ubuntu packages installed on a debian? It looks wrong.
For example: https://packages.debian.org/jessie/gstreamer1.0-alsa
There isn't any ubuntu mentioned there.@jsulm said in QT5.7 Coss-Compile with Raspberry Pi 3:
I'm not sure whether configure looks there by default.
It does, at least for
/usr/local/lib
and/usr/local/include
. -
@p3c0
I add -v and it showsthe tslib:
checking for tslib...
/home/lxy/Downloads/qt5.7安装/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g++ -c -pipe -marm -mfpu=vfp -mtune=arm1176jzf-s -march=armv6zk -mabi=aapcs-linux -mfloat-abi=hard --sysroot=/opt/rasp-pi-rootfs-qt5.7 -O2 -Wall -W -fPIC -I. -I/opt/rasp-pi-rootfs-qt5.7/usr/local/tslib -I../../../mkspecs/devices/linux-rasp-pi-g++ -o tslib.o tslib.cpp
tslib.cpp:40:19: fatal error: tslib.h: No such file or directory
compilation terminated.
Makefile:195: recipe for target 'tslib.o' failed
make: *** [tslib.o] Error 1
tslib disabled.
The tslib functionality test failed!and gstreamer1.0:
checking for GStreamer 1.0...
Project ERROR: gstreamer-audio-1.0 development package not found
GStreamer 1.0 disabled.
The GStreamer 1.0 functionality test failed!It looks like that I don't install tslib in the correct path. But I don't know where should I install.
I will check if I really install gsreamer-audio-1.0 -
$ ls -R
.:
bin etc include lib./bin:
ts_calibrate ts_harvest ts_print ts_print_raw ts_test./etc:
ts.conf./include:
tslib.h./lib:
libts-0.0.so.0 libts-0.0.so.0.1.1 libts.la libts.so pkgconfig ts./lib/pkgconfig:
tslib-0.0.pc./lib/ts:
arctic2.la corgi.la h3600.la linear_h2200.la mk712.la ucb1x00.la
arctic2.so corgi.so h3600.so linear_h2200.so mk712.so ucb1x00.so
collie.la dejitter.la input.la linear.la pthres.la variance.la
collie.so dejitter.so input.so linear.so pthres.so variance.soAs is shown above, tslib.h is in /usr/local/tslib/include.
And I find that I did not have gstreamer1.0-audio. And apt-get can't get gstreamer1.0-audio.
-
@jsulm
yes, it is in /opt/rasp-pi-rootfs-qt5.7/usr/local/tslib/include. Because I run ls -R on raspberry, so it seems in the wrong path. But when I mount SD card on x86 system, it will be in the path as you say.I am trying to install gstreamer1.0-audio. But apt-get can't find it.
-
@ascnp said in QT5.7 Coss-Compile with Raspberry Pi 3:
yes, it is in /opt/rasp-pi-rootfs-qt5.7/usr/local/tslib/include.
How did it end up there?/usr/local/tslib
isn't a standard search location for includes.
Edit: Don't mind me, it doesn't really matter as it's passed as an additional include path.PS
I don't know how correct you are by saying your distro is almost the same as jessie, as jessie doesn't providelibts
at all. It appears to be deprecated or something. -
@ascnp No, what I mean is: you need to pass -I/opt/rasp-pi-rootfs-qt5.7/usr/local/tslib/include instead of -I/opt/rasp-pi-rootfs-qt5.7/usr/local/tslib to configure. Or move the header file one directory up (to /opt/rasp-pi-rootfs-qt5.7/usr/local/tslib).
/home/lxy/Downloads/qt5.7安装/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g++ -c -pipe -marm -mfpu=vfp -mtune=arm1176jzf-s -march=armv6zk -mabi=aapcs-linux -mfloat-abi=hard --sysroot=/opt/rasp-pi-rootfs-qt5.7 -O2 -Wall -W -fPIC -I. -I/opt/rasp-pi-rootfs-qt5.7/usr/local/tslib -I../../../mkspecs/devices/linux-rasp-pi-g++ -o tslib.o tslib.cpp
Regarding gsreamer-audio-1.0: I don't know what the correct name is. Just list all gstreamer packages and see whether you can find one with audio (maybe gsreamer-alsa-1.0?).
-
@ascnp said in QT5.7 Coss-Compile with Raspberry Pi 3:
@jsulm
yes, it is in /opt/rasp-pi-rootfs-qt5.7/usr/local/tslib/include. Because I run ls -R on raspberry, so it seems in the wrong path. But when I mount SD card on x86 system, it will be in the path as you say.I am trying to install gstreamer1.0-audio. But apt-get can't find it.
Try installing
libgstreamer-plugins-base1.0-dev
-
@kshegunov
I also doubt that the path is not a standard search path, so that qt can not find them. I said "ubuntu mate is almost the same as jessie", which means they are both arm arch and have the same Instruction set, because they can both run on raspberry pi. So they have the same compile tools. I'm a newbie of linux system lol, so I don't know much more about the os. All I want is to finish build qt and start coding. I use qt 5.4.1before, and it is really hard to upgrade software like Qt's version in linux.@jsulm
I did not find anything like gstreamer-audio. I am going to isntall all I can install about gstreamer1.0 without thinking lol..@p3c0
After installing libgstreamer-plugins-base1.0-dev, it shows:
checking for GStreamer 1.0.../home/lxy/Downloads/qt5.7安装/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g++ -c -pipe -marm -mfpu=vfp -mtune=arm1176jzf-s -march=armv6zk -mabi=aapcs-linux -mfloat-abi=hard --sysroot=/opt/rasp-pi-rootfs-qt5.7 -O2 -pthread -pthread -pthread -pthread -pthread -Wall -W -fPIC -I. -I/opt/rasp-pi-rootfs-qt5.7/usr/include/gstreamer-1.0 -I/opt/rasp-pi-rootfs-qt5.7/usr/lib/arm-linux-gnueabihf/gstreamer-1.0/include -I/opt/rasp-pi-rootfs-qt5.7/usr/include/glib-2.0 -I/opt/rasp-pi-rootfs-qt5.7/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I../../../mkspecs/devices/linux-rasp-pi-g++ -o gstreamer.o gstreamer.cpp /home/lxy/Downloads/qt5.7安装/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g++ -Wl,-rpath-link,/opt/rasp-pi-rootfs-qt5.7/opt/vc/lib -Wl,-rpath-link,/opt/rasp-pi-rootfs-qt5.7/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/opt/rasp-pi-rootfs-qt5.7/lib/arm-linux-gnueabihf -mfloat-abi=hard -Wl,-O1 -o gstreamer gstreamer.o --sysroot=/opt/rasp-pi-rootfs-qt5.7 -L/opt/rasp-pi-rootfs-qt5.7/usr/lib/arm-linux-gnueabihf -lgstaudio-1.0 -lgstvideo-1.0 -lgstbase-1.0 -lgstpbutils-1.0 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0 /home/lxy/Downloads/qt5.7安装/gcc-4.7-linaro-rpi-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.7.2/../../../../arm-linux-gnueabihf/bin/ld: /opt/rasp-pi-rootfs-qt5.7/usr/lib/arm-linux-gnueabihf/libglib-2.0.a(libglib_2_0_la-gthread-posix.o): undefined reference to symbol 'pthread_getspecific@@GLIBC_2.4' /home/lxy/Downloads/qt5.7安装/gcc-4.7-linaro-rpi-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.7.2/../../../../arm-linux-gnueabihf/bin/ld: note: 'pthread_getspecific@@GLIBC_2.4' is defined in DSO /opt/rasp-pi-rootfs-qt5.7/lib/arm-linux-gnueabihf/libpthread.so.0 so try adding it to the linker command line /opt/rasp-pi-rootfs-qt5.7/lib/arm-linux-gnueabihf/libpthread.so.0: could not read symbols: Invalid operation collect2: error: ld returned 1 exit status Makefile:92: recipe for target 'gstreamer' failed make: *** [gstreamer] Error 1 GStreamer 1.0 disabled. The GStreamer 1.0 functionality test failed!
it seems that I need something else.
-
@ascnp said in QT5.7 Coss-Compile with Raspberry Pi 3:
gnueabihf/bin/ld: note: 'pthread_getspecific@@GLIBC_2.4' is defined in DSO /opt/rasp-pi-rootfs-qt5.7/lib/arm-linux-gnueabihf/libpthread.so.0 so try adding it to the linker command line
This tells you what you need to do: add /opt/rasp-pi-rootfs-qt5.7/lib/arm-linux-gnueabihf as directory for libraries (-L/opt/rasp-pi-rootfs-qt5.7/lib/arm-linux-gnueabihf). It's not related to gstreamer anymore.
-
I google the error
"libpthread.so.0: could not read symbols: Invalid operation"
and find that it is caused by command linker command line. But I try adding the path to linker command line with -L and ldconfig, but didn't work. And another way to solve this is add -lpthread after ./configer. and it did work. But another error comes."/home/lxy/Downloads/qt5.7安装/gcc-4.7-linaro-rpi-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.7.2/../../../../arm-linux-gnueabihf/bin/ld: /opt/rasp-pi-rootfs-qt5.7/usr/lib/arm-linux-gnueabihf/libglib-2.0.a(libglib_2_0_la-gregex.o): undefined reference to symbol 'pcre_study'
/home/lxy/Downloads/qt5.7安装/gcc-4.7-linaro-rpi-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.7.2/../../../../arm-linux-gnueabihf/bin/ld: note: 'pcre_study' is defined in DSO /opt/rasp-pi-rootfs-qt5.7/lib/arm-linux-gnueabihf/libpcre.so.3 so try adding it to the linker command line
/opt/rasp-pi-rootfs-qt5.7/lib/arm-linux-gnueabihf/libpcre.so.3: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
Makefile:92: recipe for target 'gstreamer' failed
make: *** [gstreamer] Error 1
GStreamer 1.0 disabled."Linker command line again! And adding to linker command line with ldconfig and -L, but not work again. Now I really don't know how to solve the proble. Is my pkg-config or compile tools broken?
-
I find another strange thing. Before checking gstreamer1.0, qt test system pcre, and the most strange thing is that it sucess!
checking for PCRE...
/home/lxy/Downloads/qt5.7安装/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g++ -c -pipe -marm -mfpu=vfp -mtune=arm1176jzf-s -march=armv6zk -mabi=aapcs-linux -mfloat-abi=hard --sysroot=/opt/rasp-pi-rootfs-qt5.7 -O2 -Wall -W -fPIC -I. -I/opt/rasp-pi-rootfs-qt5.7/usr/local/tslib/include -I../../../mkspecs/devices/linux-rasp-pi-g++ -o pcre.o pcre.cpp
/home/lxy/Downloads/qt5.7安装/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g++ -Wl,-rpath-link,/opt/rasp-pi-rootfs-qt5.7/opt/vc/lib -Wl,-rpath-link,/opt/rasp-pi-rootfs-qt5.7/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/opt/rasp-pi-rootfs-qt5.7/lib/arm-linux-gnueabihf -mfloat-abi=hard -Wl,-O1 -o pcre pcre.o --sysroot=/opt/rasp-pi-rootfs-qt5.7 -L/opt/rasp-pi-rootfs-qt5.7/lib/arm-linux-gnueabihf/ -L/opt/rasp-pi-rootfs-qt5.7/usr/lib -L/opt/rasp-pi-rootfs-qt5.7/lib -L/opt/rasp-pi-rootfs-qt5.7/usr/local/tslib/ -lpthread -lpcre -lpcre16
PCRE enabled.But when cheking gstreamer1.0, the libglib-2.0.a(libglib_2_0_la-gregex.o) has a referebce to pcre_study , and it tried to find libpcre.so.3, but says the lib is not in the linker command line. Why is it? Is that means when qt checking diffenrent part, it will set different linker command line, but not the all-use same lib?