到官网下载qt-everywhere-opensource-src-5.9.7.tar.xz
编译这个需要很大耐心,因为很多库要安装编译,本来想在下篇文章贴出教程,可惜我自己做的笔记,不小心被其它内容覆盖掉,恢复不回来了,泪崩~~~~
你们只要根据我给出的qmake.conf和configure配置, 去编译好各个库,就简单很多了
qmake.conf的内容如下 交叉编译器根据自己平台的而定
#
# qmake configuration for building with arm-linux-gnueabi-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
QMAKE_LIBS+= -lffi -lz -lorc-0.4 -lgio-2.0 -lgsttag-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lgstbase-1.0 -lgstreamer-1.0 -lgthread-2.0
# modifications to g++.conf
QMAKE_CC = arm-linux-gnueabihf-gcc -lts
QMAKE_CXX = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++ -lts
# modifications to linux.conf
QMAKE_AR = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = arm-linux-gnueabihf-objcopy
QMAKE_NM = arm-linux-gnueabihf-nm -P
QMAKE_STRIP = arm-linux-gnueabihf-strip
load(qt_config)
1.gstreamer1.0
gstreamer的下载路径https://gstreamer.freedesktop.org/src/
下载路径http://sources.webos-ports.org/ ,这个链接超多库,非常好用
其中QMAKE_LIBS所有引用的库都是需要编译库,有这么一些库glib ffi xml2 zlib orc ogg gstreamer1.0 gst-libav gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly
首先先去编译glib ffi xml2 zlib orc ogg 这些库,这些库可以在网上找怎么去交叉编译,好多教程
其次编译gstreamer1.0库,我是参照下面那链接的(链接是gstreamer0.10的)
https://www.cnblogs.com/subo_peng/p/4689406.html
区别就是把gst-ffmepg换为了gst-libav了,下载并去交叉编译, 最好把它们都安装在同个路径下,这下只需配置一个PKG_CONFIG_PATH就好了(gstreamer1.0 gst-libav gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly)
2.tslib1.4
-lts值tslib库,如果自己用不到触摸屏可以去掉,否则自己去交叉编译一个就好了,网上很多教程的
编译的时候可能会出现的一个错误 cambinfocu.cpp 513行 没有定义xxx.REGION.xxxx
根据下面来改就OK了。
#if GST_CHECK_VERSION(1,1,3)
gpointer state = NULL;
const GstMetaInfo *info = GST_VIDEO_REGION_OF_INTEREST_META_INFO;
while (GstMeta *meta = gst_buffer_iterate_meta(buffer, &state)) {
if (meta->info->api != info->api)
continue;
GstVideoRegionOfInterestMeta *region = reinterpret_cast<GstVideoRegionOfInterestMeta *>(meta);
faces.append(QRect(region->x, region->y, region->w, region->h));
}
#else
Q_UNUSED(buffer);
#endif
配置
./configure -v \
--prefix=/home/gst-5.13.2 \
-xplatform linux-arm-gnueabi-g++ \
-sysroot /home/crj/ssd-arm-gcc/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf/arm-linux-gnueabihf/libc \
-opensource \
-debug \
-strip \
-confirm-license \
-no-opengl -gstreamer \
-no-pch \
-shared \
-no-xcb \
-no-eglfs \
-nomake examples \
-qt-zlib \
-linuxfb \
-I/home/tslib/include -L/home/tslib/lib \
-I/home/user/arm-alsa/include -L/home/user/arm-alsa/lib \
-I/customer/gstreamer/include/gstreamer-1.0 -I/home/zlib-glib-ffi-xml/lib/glib/lib/glib-2.0/include -L/customer/gstreamer/lib \
-I/home/zlib-glib-ffi-xml/lib/glib/include/glib-2.0 -L/home/zlib-glib-ffi-xml/lib/glib/lib \
-I/home/zlib-glib-ffi-xml/lib/zlib/include -L/home/zlib-glib-ffi-xml/lib/zlib/lib \
-I/home/zlib-glib-ffi-xml/lib/libffi/include -L/home/zlib-glib-ffi-xml/lib/libffi/lib \
-I/home/zlib-glib-ffi-xml/lib/libxml/include -L/home/zlib-glib-ffi-xml/lib/libxml/lib \
-I/home/user/zlib-glib-ffi-xml/gstream/orc/include -L/home/user/zlib-glib-ffi-xml/gstream/orc/lib
以上的-I -L 都是上面所说需要编译库的头文件和库的路径。
也就是gstreamer glib zlib ffi xml orc,
其中的gstreamer所有的插件我都是编译在同个目录下的
如果哪里有出错,注意看它的config.log,如果报
ERROR: Feature ‘gstreamer’ was enabled, but the pre-condition ‘features.gstreamer_1_0 || features.gstreamer_0_10’ failed.
就进入log,查找looking for library gstreamer_1_0,直接定位到错误的地方看是缺少什么头文件或缺少库或没有export PKG_CONFIG_PATH,找到问题去个个解决就好了
这是我成功的结果,希望你们也可以的
如果有什么问题,可以在评论下留言。