qt-mobility1.2.0-arm-cross-compile with4.7.3

本文记录了QtMobility 1.2.0版本在Linux环境下进行ARM交叉编译的过程,包括解决配置、链接错误及依赖问题等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/******************************************************************************************************
仔细查阅便知道,QtMobility1.2.0以前的版本是不支持camera图像显示的,特别强调的是在Linux下,Qt官网便可以知道。
/******************************************************************************************************


$tar -xzvf qt-mobility-opensource-src-1.2.0.tar.gz


$cd qt-mobility-opensource-src-1.2.0


$./configure -prefix /usr/local/qt-mobility-1.1.3-lib/ -libdir "/home/linuxsir/dvsdk/ti-dvsdk_dm3730-evm_4_02_00_06/linux-devkit/arm-none-linux-gnueabi/usr/include/qtopia /home/linuxsir/dvsdk/ti-dvsdk_dm3730-evm_4_02_00_06/omap35x_graphics_sdk_4.00.00.01/gfx_dbg_es2.x/freedesktop/kdrive/usr/X11R6_SGX/lib /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/lib -rpath /home/linuxsir/arm-linux/arm-2009q1/lib /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/lib/alsa-lib/smixer /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/tslib/lib /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/lib/openGlVg -lts -lOpenVG -lIMGegl -lsrv_um -lGLES_CM -lX11 -lXrandr -lglib-2.0 -lgthread-2.0 -lEGL" -headerdir "/home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/include/GLES-GL-VG/OPGL/EGL /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/include/GLES-GL-VG/OPGL2/GLES2 /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/include/GLES-GL-VG/OPGL/GLES /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/include/GLES-GL-VG/OVG/VG /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/include /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/lib/dbus-1.0/include/dbus /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/include/dbus-1.0/dbus /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/include/alsa /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/tslib/include /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/lib/glib-2.0/include /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/include/libxml2/libxml /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/include/glib-2.0/glib /home/linuxsir/dvsdk/ti-dvsdk_dm3730-evm_4_02_00_06/linux-devkit/arm-none-linux-gnueabi/usr/include /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/lib/openGlVg /home/linuxsir/dvsdk/ti-dvsdk_dm3730-evm_4_02_00_06/omap35x_graphics_sdk_4.00.00.01/gfx_dbg_es2.x/freedesktop/kdrive/usr/X11R6_SGX/include /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/include/gstreamer-0.10 /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/include/libxml2"


$make

-----------------------------------------------------------------------------------------------------------------------

../3rdparty/proj/pj_ell_set.c:77: error: invalid conversion from 'const char*' to 'char*'
../3rdparty/proj/pj_ell_set.c:77: error:   initializing argument 2 of 'PVALUE pj_param(paralist*, char*)'
make[2]: *** [../../build/Debug/QtLocation/pj_ell_set.o] Error 1
make[2]: Leaving directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/src/location'
make[1]: *** [sub-location-make_default] Error 2
make[1]: Leaving directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/src'
make: *** [sub-src-make_default-ordered] Error 2


$vim ./src/3rdparty/proj/pj_ell_set.c

 76 
 77                         tmp = sin(pj_param(pl, (char*)(i ? "rR_lat_a" : "rR_lat_g")).f);
 78                         if (fabs(tmp) > HALFPI) {


$make

-------------------------------------------------------------------------------------------------------------------------------

/home/linuxsir/arm-linux/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lX11
collect2: ld returned 1 exit status
make[2]: *** [../../lib/libQtSystemInfo.so.1.2.0] Error 1
make[2]: Leaving directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/src/systeminfo'
make[1]: *** [sub-systeminfo-make_default] Error 2
make[1]: Leaving directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/src'
make: *** [sub-src-make_default-ordered] Error 2


$sudo vim /usr/local/qt-emembeded-4.7.3-arm-linux/mkspecs/qws/linux-omap-g++/qmake.conf


QMAKE_INCDIR            += /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/tslib/include /home/linuxsir/dvsdk/ti-dvsdk_dm3730-evm_4_02_00_06/omap35x_graphics_sdk_4.00.00.01/gfx_dbg_es2.x/freedesktop/kdrive/usr/X11R6_SGX/include


QMAKE_LIBDIR            += /home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/tslib/lib /home/linuxsir/dvsdk/ti-dvsdk_dm3730-evm_4_02_00_06/omap35x_graphics_sdk_4.00.00.01/gfx_dbg_es2.x/freedesktop/kdrive/usr/X11R6_SGX/lib


$./configure -prefix /usr/local/qt-mobility-1.1.3-lib/
------------------------------------------------------------------------------------------------------------------------------


toothlocaldevice.o bluetooth/qbluetoothlocaldevice.cpp
In file included from bluetooth/qbluetoothlocaldevice.cpp:43:
bluetooth/qbluetoothlocaldevice_p.h:56:24: error: QDBusContext: No such file or directory
bluetooth/qbluetoothlocaldevice_p.h:57:27: error: QDBusObjectPath: No such file or directory
bluetooth/qbluetoothlocaldevice_p.h:58:24: error: QDBusMessage: No such file or directory
In file included from bluetooth/qbluetoothlocaldevice.cpp:43:
bluetooth/qbluetoothlocaldevice_p.h:74: error: expected class-name before '{' token
bluetooth/qbluetoothlocaldevice_p.h:89: error: expected ',' or '...' before '&' token
bluetooth/qbluetoothlocaldevice_p.h:89: error: ISO C++ forbids declaration of 'QDBusObjectPath' with no type
bluetooth/qbluetoothlocaldevice_p.h:92: error: expected ',' or '...' before '&' token
bluetooth/qbluetoothlocaldevice_p.h:92: error: ISO C++ forbids declaration of 'QDBusObjectPath' with no type
bluetooth/qbluetoothlocaldevice_p.h:94: error: expected ',' or '...' before '&' token
bluetooth/qbluetoothlocaldevice_p.h:94: error: ISO C++ forbids declaration of 'QDBusObjectPath' with no type
bluetooth/qbluetoothlocaldevice_p.h:96: error: expected ',' or '...' before '&' token
bluetooth/qbluetoothlocaldevice_p.h:96: error: ISO C++ forbids declaration of 'QDBusObjectPath' with no type
bluetooth/qbluetoothlocaldevice_p.h:97: error: expected ',' or '...' before '&' token
bluetooth/qbluetoothlocaldevice_p.h:97: error: ISO C++ forbids declaration of 'QDBusObjectPath' with no type
bluetooth/qbluetoothlocaldevice_p.h:101: error: 'QDBusVariant' has not been declared
bluetooth/qbluetoothlocaldevice_p.h:104: error: 'QDBusMessage' does not name a type
bluetooth/qbluetoothlocaldevice_p.h:105: error: ISO C++ forbids declaration of 'QDBusConnection' with no type
bluetooth/qbluetoothlocaldevice_p.h:105: error: expected ';' before '*' token
make[2]: *** [../../build/Debug/QtConnectivity/qbluetoothlocaldevice.o] Error 1
make[2]: Leaving directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/src/connectivity'


$vim ./src/connectivity/bluetooth/qbluetoothlocaldevice_p.h


 54 #ifndef QT_NO_DBUS
 55 #include <QObject>
 56 #include <QtDBus/QDBusContext>
 57 #include <QtDBus/QDBusObjectPath>
 58 #include <QtDBus/QDBusMessage>
 59 


$sudo vim /usr/local/qt-emembeded-4.7.3-arm-linux/mkspecs/qws/linux-omap-g++/qmake.conf


QMAKE_INCDIR            += /home/linuxsir/dvsdk/ti-dvsdk_dm3730-evm_4_02_00_06/linux-devkit/arm-none-linux-gnueabi/usr/include/qtopia


$./configure -prefix /usr/local/qt-mobility-1.1.3-lib/


$make 
------------------------------------------------------------------------------------------------------------------------------

m-2009q1/lib/lib-arm/lib/openGlVg -lz -lpthread  
../../build/Debug/QtConnectivity/qbluetoothservicediscoveryagent.o: In function `QtMobility::QBluetoothServiceDiscoveryAgent::qt_metacall(QMetaObject::Call, int, void**)':
/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/src/connectivity/../../build/Debug/QtConnectivity/moc/moc_qbluetoothservicediscoveryagent.cpp:106: undefined reference to `QtMobility::QBluetoothServiceDiscoveryAgentPrivate::_q_discoveredServices(QDBusPendingCallWatcher*)'
/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/src/connectivity/../../build/Debug/QtConnectivity/moc/moc_qbluetoothservicediscoveryagent.cpp:107: undefined reference to `QtMobility::QBluetoothServiceDiscoveryAgentPrivate::_q_createdDevice(QDBusPendingCallWatcher*)'
collect2: ld returned 1 exit status
make[2]: *** [../../lib/libQtConnectivity.so.1.2.0] Error 1
make[2]: Leaving directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/src/connectivity'




$vim src/connectivity/../../build/Debug/QtConnectivity/moc/moc_qbluetoothservicediscoveryagent.cpp


105         case 10: d_func()->_q_serviceDiscoveryFinished(); break;
106         //case 11: d_func()->_q_discoveredServices((*reinterpret_cast< QDBusPendingCallWatcher*(*)>(_a[1]))); break;
107         //case 12: d_func()->_q_createdDevice((*reinterpret_cast< QDBusPendingCallWatcher*(*)>(_a[1]))); break;


$make
------------------------------------------------------------------------------------------------------------------------------
/LIBS/

/home/linuxsir/arm-linux/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: warning: libgthread-2.0.so.0, needed by /usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so, not found (try using -rpath or -rpath-link)
/home/linuxsir/arm-linux/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: warning: libglib-2.0.so.0, needed by /usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so, not found (try using -rpath or -rpath-link)
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so: undefined reference to `g_source_set_priority'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so: undefined reference to `g_source_set_can_recurse'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so: undefined reference to `g_source_new'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so: undefined reference to `g_main_context_ref'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so: undefined reference to `g_source_remove_poll'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so: undefined reference to `g_main_context_new'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so: undefined reference to `g_main_context_iteration'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so: undefined reference to `g_main_context_wakeup'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so: undefined reference to `g_thread_init'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so: undefined reference to `g_main_context_default'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so: undefined reference to `g_threads_got_initialized'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so: undefined reference to `g_source_add_poll'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so: undefined reference to `g_main_context_unref'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so: undefined reference to `g_main_context_pending'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so: undefined reference to `g_source_destroy'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so: undefined reference to `g_source_unref'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtCore.so: undefined reference to `g_source_attach'
collect2: ld returned 1 exit status
make[2]: *** [../../bin/servicedbgen] Error 1
make[2]: Leaving directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/tools/servicedbgen'


$sudo vim /usr/local/qt-emembeded-4.7.3-arm-linux/mkspecs/qws/linux-omap-g++/qmake.conf


LIBS                    += -lglib-2.0 -lgthread-2.0 -pthread -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -ldl -lxml2 -lgstinterfaces-0.10 -lgstvideo-0.10 -lgstbase-0.10 -lz


./configure -prefix /usr/local/qt-mobility-1.1.3-lib/


$make
------------------------------------------------------------------------------------------------------------------------------


/home/linuxsir/arm-linux/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: warning: libts-0.0.so.0, needed by /usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so, not found (try using -rpath or -rpath-link)
/home/linuxsir/arm-linux/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: warning: libEGL.so, needed by /usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so, not found (try using -rpath or -rpath-link)
/home/linuxsir/arm-linux/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: warning: libOpenVG.so, needed by /usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so, not found (try using -rpath or -rpath-link)
/home/linuxsir/arm-linux/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: warning: libIMGegl.so, needed by /usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so, not found (try using -rpath or -rpath-link)
/home/linuxsir/arm-linux/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: warning: libsrv_um.so, needed by /usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so, not found (try using -rpath or -rpath-link)
/home/linuxsir/arm-linux/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: warning: libGLES_CM.so, needed by /usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so, not found (try using -rpath or -rpath-link)
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `eglCreateWindowSurface'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `eglBindAPI'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `eglCreateContext'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `eglCreatePixmapSurface'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `eglMakeCurrent'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `eglDestroySurface'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `eglGetConfigAttrib'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `eglGetDisplay'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `ts_read_raw'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `eglChooseConfig'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `ts_open'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `eglInitialize'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `eglGetProcAddress'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `ts_fd'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `eglGetConfigs'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `eglQueryString'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `eglDestroyContext'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `ts_config'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `ts_close'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `eglSwapBuffers'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `eglGetError'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `eglTerminate'
/usr/local/qt-emembeded-4.7.3-arm-linux/lib/libQtGui.so: undefined reference to `ts_read'
collect2: ld returned 1 exit status
make[2]: *** [../../bin/servicexmlgen] Error 1
make[2]: Leaving directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/tools/servicexmlgen'


$sudo vim /usr/local/qt-emembeded-4.7.3-arm-linux/mkspecs/qws/linux-omap-g++/qmake.conf


LIBS                    += -lglib-2.0 -lgthread-2.0 -pthread -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -ldl -lxml2 -lgstinterfaces-0.10 -lgstvideo-0.10 -lgstbase-0.10 -lz


to 


LIBS                    += -lglib-2.0 -lgthread-2.0 -pthread -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -ldl -lxml2 -lgstinterfaces-0.10 -lgstvideo-0.10 -lgstbase-0.10 -lz -lOpenVG -lIMGegl -lsrv_um -lGLES_CM -lEGL -lts




./configure -prefix /usr/local/qt-mobility-1.1.3-lib/


$make
------------------------------------------------------------------------------------------------------------------------------


../../../build/Debug/qgstengine/gstvideoconnector.o gstvideoconnector.c
gstvideoconnector.c:73: warning: unused parameter 'data'
gstvideoconnector.c: In function 'void gst_video_connector_class_init(GstVideoConnectorClass*)':
gstvideoconnector.c:109: error: invalid conversion from 'void*' to 'GstElementClass*'
gstvideoconnector.c:119: error: invalid conversion from 'int' to 'GSignalFlags'
gstvideoconnector.c:119: error:   initializing argument 3 of 'guint g_signal_new(const gchar*, GType, GSignalFlags, guint, gboolean (*)(GSignalInvocationHint*, GValue*, const GValue*, void*), void*, void (*)(GClosure*, GValue*, guint, const GValue*, void*, void*), GType, guint, ...)'
gstvideoconnector.c: At global scope:
gstvideoconnector.c:130: warning: unused parameter 'g_class'
gstvideoconnector.c:235: warning: unused parameter 'pad'
gstvideoconnector.c:235: warning: unused parameter 'buffer'
make[3]: *** [../../../build/Debug/qgstengine/gstvideoconnector.o] Error 1
make[3]: Leaving directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/plugins/multimedia/gstreamer'




$vim ./plugins/multimedia/gstreamer/gstvideoconnector.c


116             g_signal_new ("resend-new-segment", G_TYPE_FROM_CLASS (klass),
*117                           (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
118                           G_STRUCT_OFFSET (GstVideoConnectorClass, resend_new_segment), NULL, NULL,
119                           g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN);


$make


------------------------------------------------------------------------------------------------------------------------------


-none-linux-gnueabi/usr/include/qtopia -I/home/linuxsir/arm-linux/arm-2009q1/lib/lib-arm/include/gstreamer-0.10 -o ../../../build/Debug/qgstengine/qgstreamervideooverlay.o qgstreamervideooverlay.cpp
cc1plus: warning: include location "/usr/include/gstreamer-0.10" is unsafe for cross-compilation
cc1plus: warning: include location "/usr/include/libxml2" is unsafe for cross-compilation
qgstreamervideooverlay.cpp:51: error: 'QGstreamerVideoOverlay' has not been declared
qgstreamervideooverlay.cpp:51: error: ISO C++ forbids declaration of 'QGstreamerVideoOverlay' with no type
qgstreamervideooverlay.cpp: In function 'int QGstreamerVideoOverlay(QObject*)':
qgstreamervideooverlay.cpp:52: error: only constructors take base initializers
qgstreamervideooverlay.cpp:54: error: 'm_surface' was not declared in this scope
qgstreamervideooverlay.cpp:58: error: 'm_videoSink' was not declared in this scope
qgstreamervideooverlay.cpp:64: error: invalid use of 'this' in non-member function
qgstreamervideooverlay.cpp:64: error: 'connect' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:67: error: expected constructor, destructor, or type conversion before '::' token
qgstreamervideooverlay.cpp:75: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp:75: error: non-member function 'WId winId()' cannot have cv-qualifier
qgstreamervideooverlay.cpp: In function 'WId winId()':
qgstreamervideooverlay.cpp:77: error: 'm_surface' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:80: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp: In function 'void setWinId(WId)':
qgstreamervideooverlay.cpp:82: error: 'isReady' was not declared in this scope
qgstreamervideooverlay.cpp:83: error: 'm_surface' was not declared in this scope
qgstreamervideooverlay.cpp:86: error: 'readyChanged' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:89: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp:89: error: non-member function 'QRect displayRect()' cannot have cv-qualifier
qgstreamervideooverlay.cpp: In function 'QRect displayRect()':
qgstreamervideooverlay.cpp:91: error: 'm_displayRect' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:94: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp: In function 'void setDisplayRect(const QRect&)':
qgstreamervideooverlay.cpp:96: error: 'm_displayRect' was not declared in this scope
qgstreamervideooverlay.cpp:98: error: 'setScaledDisplayRect' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:101: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp:101: error: non-member function 'Qt::AspectRatioMode aspectRatioMode()' cannot have cv-qualifier
qgstreamervideooverlay.cpp: In function 'Qt::AspectRatioMode aspectRatioMode()':
qgstreamervideooverlay.cpp:103: error: 'm_aspectRatioMode' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:106: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp: In function 'void setAspectRatioMode(Qt::AspectRatioMode)':
qgstreamervideooverlay.cpp:108: error: 'm_aspectRatioMode' was not declared in this scope
qgstreamervideooverlay.cpp:110: error: 'setScaledDisplayRect' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:113: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp:117: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp:117: error: non-member function 'int brightness()' cannot have cv-qualifier
qgstreamervideooverlay.cpp: In function 'int brightness()':
qgstreamervideooverlay.cpp:119: error: 'm_surface' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:122: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp: In function 'void setBrightness(int)':
qgstreamervideooverlay.cpp:124: error: 'm_surface' was not declared in this scope
qgstreamervideooverlay.cpp:126: error: 'brightnessChanged' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:129: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp:129: error: non-member function 'int contrast()' cannot have cv-qualifier
qgstreamervideooverlay.cpp: In function 'int contrast()':
qgstreamervideooverlay.cpp:131: error: 'm_surface' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:134: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp: In function 'void setContrast(int)':
qgstreamervideooverlay.cpp:136: error: 'm_surface' was not declared in this scope
qgstreamervideooverlay.cpp:138: error: 'contrastChanged' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:141: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp:141: error: non-member function 'int hue()' cannot have cv-qualifier
qgstreamervideooverlay.cpp: In function 'int hue()':
qgstreamervideooverlay.cpp:143: error: 'm_surface' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:146: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp: In function 'void setHue(int)':
qgstreamervideooverlay.cpp:148: error: 'm_surface' was not declared in this scope
qgstreamervideooverlay.cpp:150: error: 'hueChanged' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:153: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp:153: error: non-member function 'int saturation()' cannot have cv-qualifier
qgstreamervideooverlay.cpp: In function 'int saturation()':
qgstreamervideooverlay.cpp:155: error: 'm_surface' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:158: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp: In function 'void setSaturation(int)':
qgstreamervideooverlay.cpp:160: error: 'm_surface' was not declared in this scope
qgstreamervideooverlay.cpp:162: error: 'saturationChanged' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:165: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp:165: error: non-member function 'bool isFullScreen()' cannot have cv-qualifier
qgstreamervideooverlay.cpp: In function 'bool isFullScreen()':
qgstreamervideooverlay.cpp:167: error: 'm_fullScreen' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:170: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp: In function 'void setFullScreen(bool)':
qgstreamervideooverlay.cpp:172: error: 'm_fullScreen' was not declared in this scope
qgstreamervideooverlay.cpp:172: error: 'fullScreenChanged' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:175: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp:175: error: non-member function 'QSize nativeSize()' cannot have cv-qualifier
qgstreamervideooverlay.cpp: In function 'QSize nativeSize()':
qgstreamervideooverlay.cpp:177: error: 'm_surface' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:180: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp:180: error: non-member function 'QAbstractVideoSurface* surface()' cannot have cv-qualifier
qgstreamervideooverlay.cpp: In function 'QAbstractVideoSurface* surface()':
qgstreamervideooverlay.cpp:182: error: 'm_surface' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:185: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp: In function 'GstElement* videoSink()':
qgstreamervideooverlay.cpp:187: error: 'm_videoSink' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:190: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp: In function 'void surfaceFormatChanged()':
qgstreamervideooverlay.cpp:192: error: 'setScaledDisplayRect' was not declared in this scope
qgstreamervideooverlay.cpp:194: error: 'nativeSizeChanged' was not declared in this scope
qgstreamervideooverlay.cpp: At global scope:
qgstreamervideooverlay.cpp:197: error: 'QGstreamerVideoOverlay' is not a class or namespace
qgstreamervideooverlay.cpp: In function 'void setScaledDisplayRect()':
qgstreamervideooverlay.cpp:199: error: 'm_surface' was not declared in this scope
qgstreamervideooverlay.cpp:201: error: 'm_aspectRatioMode' was not declared in this scope
qgstreamervideooverlay.cpp:205: error: 'm_displayRect' was not declared in this scope
qgstreamervideooverlay.cpp:215: error: 'm_displayRect' was not declared in this scope
make[3]: *** [../../../build/Debug/qgstengine/qgstreamervideooverlay.o] Error 1
make[3]: Leaving directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/plugins/multimedia/gstreamer'


$vim plugins/multimedia/gstreamer/qgstreamervideooverlay.h


 52 class QX11VideoSurface;
 53 
 54 #if defined(Q_WS_X11) && !defined(QT_NO_XVIDEO)
 55 
 56 QT_USE_NAMESPACE


Q_WS_X11 was not be defined!




vim ./include/Qt/qglobal.h


 818 #  elif !defined(Q_WS_QWS)
 819 #    define Q_WS_X11


$sudo vim /usr/local/qt-emembeded-4.7.3-arm-linux/mkspecs/qws/linux-omap-g++/qmake.conf


LIBS                    += -lglib-2.0 -lgthread-2.0 -pthread -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -ldl -lxml2 -lgstinterfaces-0.10 -lgstvideo-0.10 -lgstbase-0.10 -lz -lOpenVG -lIMGegl -lsrv_um -lGLES_CM -lEGL -lts -lXv -lX11 -lXext


./configure -prefix /usr/local/qt-mobility-1.2.0-lib/


$vim plugins/multimedia/gstreamer/qgstreamervideooverlay.h
vim ./plugins/multimedia/gstreamer/qgstreamervideowindow.h


52 class QX11VideoSurface;
 53 
 54 //#if defined(Q_WS_X11) && !defined(QT_NO_XVIDEO)
 55 


115 };
116 
117 //#endif //QT_NO_XVIDEO
118 
119 #endif


$make 


------------------------------------------------------------------------------------------------------------------------------

../../../build/Debug/qgstengine/qx11videosurface.o: In function `QX11VideoSurface::findPort()':
/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/plugins/multimedia/gstreamer/qx11videosurface.cpp:459: undefined reference to `QX11Info::display()'
/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/plugins/multimedia/gstreamer/qx11videosurface.cpp:471: undefined reference to `QX11Info::display()'
../../../build/Debug/qgstengine/qx11videosurface.o: In function `QX11VideoSurface::present(QVideoFrame const&)':
/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/plugins/multimedia/gstreamer/qx11videosurface.cpp:418: undefined reference to `QX11Info::display()'
/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/plugins/multimedia/gstreamer/qx11videosurface.cpp:440: undefined reference to `QX11Info::display()'
../../../build/Debug/qgstengine/qx11videosurface.o: In function `QX11VideoSurface::start(QVideoSurfaceFormat const&)':
/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/plugins/multimedia/gstreamer/qx11videosurface.cpp:338: undefined reference to `QX11Info::display()'
../../../build/Debug/qgstengine/qx11videosurface.o:/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/plugins/multimedia/gstreamer/qx11videosurface.cpp:291: more undefined references to `QX11Info::display()' follow
collect2: ld returned 1 exit status
make[3]: *** [libqgstengine.so] Error 1
make[3]: Leaving directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/plugins/multimedia/gstreamer'


$vim plugins/plugins.pro


 -14 //contains(QT_CONFIG,declarative): SUBDIRS += declarative
 15 
 +16 SUBDIRS         += declarative


$qt-mobility-opensource-src-1.2.0$ vim plugins/multimedia/gstreamer/gstreamer.pro


 81     qgstutils.cpp
 82 
 83 
 -84 //!win32:!embedded:!mac:!symbian:!simulator:!contains(QT_CONFIG, qpa) {
 -85 //    LIBS += -lXv -lX11 -lXext
 -86 
 -87 //    HEADERS += \
 -88 //        qgstreamervideooverlay.h \
 -89 //        qgstreamervideowindow.h \
 -90 //        qgstreamervideowidget.h \
 -91 //        qx11videosurface.h \
 -92 //       qgstxvimagebuffer.h
 -93 
 -94 //   SOURCES += \
 -95 //        qgstreamervideooverlay.cpp \
 -96 //        qgstreamervideowindow.cpp \
 -97 //        qgstreamervideowidget.cpp \
 -98 //        qx11videosurface.cpp \
 -99 //        qgstxvimagebuffer.cpp
-100 //}
101 include(mediaplayer/mediaplayer.pri)


$make


$sudo make install
------------------------------------------------------------------------------------------------------------------------------


g -lQtSvg -lQtSql -lQtXmlPatterns -lQtScript -lQtGui -lQtNetwork -lQtCore -lz -lpthread  
make[3]: Leaving directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/plugins/declarative/connectivity'
make[2]: Leaving directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/plugins/declarative'
make[1]: Leaving directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/plugins'
cd translations/ && make -f Makefile 
make[1]: Entering directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/translations'
/usr/local/qt-emembeded-4.7.3-arm-linux/bin/qmake -o Makefile translations.pro
make[1]: Leaving directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/translations'
make[1]: Entering directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/translations'
make[1]: Leaving directory `/home/linuxsir/dvsdk/qt-mobility-opensource-src-1.2.0/translations'
linuxsir@ubuntu:~/dvsdk/qt-mobility-opensource-src-1.2.0$ ls lib/
libQtBearer.prl             libQtFeedback.so.1.2         libQtOrganizer.so               libQtServiceFramework.so.1.2.0
libQtBearer.so              libQtFeedback.so.1.2.0       libQtOrganizer.so.1             libQtSystemInfo.prl
libQtBearer.so.1            libQtGallery.prl             libQtOrganizer.so.1.2           libQtSystemInfo.so
libQtBearer.so.1.2          libQtGallery.so              libQtOrganizer.so.1.2.0         libQtSystemInfo.so.1
libQtBearer.so.1.2.0        libQtGallery.so.1            libQtPublishSubscribe.prl       libQtSystemInfo.so.1.2
libQtConnectivity.prl       libQtGallery.so.1.2          libQtPublishSubscribe.so        libQtSystemInfo.so.1.2.0
libQtConnectivity.so        libQtGallery.so.1.2.0        libQtPublishSubscribe.so.1      libQtVersitOrganizer.prl
libQtConnectivity.so.1      libQtLocation.prl            libQtPublishSubscribe.so.1.2    libQtVersitOrganizer.so
libQtConnectivity.so.1.2    libQtLocation.so             libQtPublishSubscribe.so.1.2.0  libQtVersitOrganizer.so.1
libQtConnectivity.so.1.2.0  libQtLocation.so.1           libQtSensors.prl                libQtVersitOrganizer.so.1.2
libQtContacts.prl           libQtLocation.so.1.2         libQtSensors.so                 libQtVersitOrganizer.so.1.2.0
libQtContacts.so            libQtLocation.so.1.2.0       libQtSensors.so.1               libQtVersit.prl
libQtContacts.so.1          libQtMultimediaKit.prl       libQtSensors.so.1.2             libQtVersit.so
libQtContacts.so.1.2        libQtMultimediaKit.so        libQtSensors.so.1.2.0           libQtVersit.so.1
libQtContacts.so.1.2.0      libQtMultimediaKit.so.1      libQtServiceFramework.prl       libQtVersit.so.1.2
libQtFeedback.prl           libQtMultimediaKit.so.1.2    libQtServiceFramework.so        libQtVersit.so.1.2.0
libQtFeedback.so            libQtMultimediaKit.so.1.2.0  libQtServiceFramework.so.1
libQtFeedback.so.1          libQtOrganizer.prl           libQtServiceFramework.so.1.2


OK! Cross complie ARM ,QtMobility1.2.0 is OK. Congretilation!


Congretulate!
ENVI软件在遥感影像处理中扮演着至关重要的角色,其中影像的几何纠正功能对于确保影像数据的精确性至关重要。几何纠正的过程涉及调整影像坐标,使其与实际地理坐标系统一致,这一步骤对于后续的分析和制图至关重要。 参考资源链接:[ENVI遥感影像处理全面指南:预处理、信息提取与三维可视化](https://wenku.csdn.net/doc/398pr5x5h3?spm=1055.2569.3001.10343) 具体步骤如下: 1. 打开ENVI软件,导入需要进行几何纠正的遥感影像。 2. 选择相应的工具,例如“Basic Tools”菜单下的“Geometric Correction”选项。 3. 根据影像数据类型和需要达到的精度,选择合适的纠正方法。ENVI提供了多种纠正算法,包括多项式模型、共线方程、地面控制点(GCP)校正等。 4. 如果使用GCP校正,需要在影像上选择若干地面控制点,并输入这些点的实际地理坐标,作为校正的基础。 5. 进行校正参数的计算,这个过程通常涉及到解算一个或多个多项式方程,以最小化影像中的点与真实地理坐标间的偏差。 6. 使用计算得到的参数进行影像的重新采样和配准,最终输出几何校正后的影像。 7. 校正结果需要评估,一般通过比较校正前后GCP的残差来验证校正的精度和效果。 适用场景: 几何纠正广泛应用于地形变化检测、土地利用调查、城市规划、环境监测等多个领域。在这些应用场景中,影像的几何准确性直接影响到分析结果的可靠性。 为了深入学习ENVI中遥感影像几何纠正的更多细节和高级应用,推荐参考《ENVI遥感影像处理全面指南:预处理、信息提取与三维可视化》一书。该指南不仅提供了理论知识,还详细介绍了操作步骤和实际应用案例,有助于读者全面掌握几何纠正的技巧和方法。 参考资源链接:[ENVI遥感影像处理全面指南:预处理、信息提取与三维可视化](https://wenku.csdn.net/doc/398pr5x5h3?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值