PDA

View Full Version : Cross compile errors: Qt 4.8 libs for arm with phonon using marvell tool chain



allamsetty
22nd March 2012, 19:39
I have installed qt-everywhere-opensource-src-4.8.0. Under mkspecs/qws/, I created a new directory for marvell:

linux-arm-marvell-linux-gnueabi-g++ and modified the qmake.conf as follows:

QMAKE_CC = arm-marvell-linux-gnueabi-gcc
QMAKE_CXX = arm-marvell-linux-gnueabi-g++
QMAKE_LINK = arm-marvell-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-marvell-linux-gnueabi-g++

QMAKE_AR = arm-marvell-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-marvell-linux-gnueabi-objcopy
QMAKE_STRIP = arm-marvell-linux-gnueabi-strip

This is for a Marvell ARMADA 168 platform.

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

My configure script is as follows:

./configure -v -embedded arm -little-endian \
-no-fast -no-largefile -no-accessibility \
-xplatform qws/linux-arm-marvell-linux-gnueabi-g++ \
-no-declarative-debug \
-nomake demos -nomake examples -no-optimized-qmake \
-qt-gfx-linuxfb \
-no-freetype -prefix /home/user/qtembedded4.8 \
-prefix-install \
-hostprefix /home/user/qtembedded4.8-host \
-debug -opensource -shared -no-javascript-jit -no-scripttools \
-webkit -no-qt3support \
-glib -phonon -phonon-backend \
-no-cups -no-nis -no-pch -no-iconv -reduce-relocations \
-depths 16 -qt-mouse-linuxinput -qt-kbd-linuxinput

--------------
Determining system architecture... (Linux:3.0.0-12-generic:i686)
32-bit Intel 80x86 (i386)
'arm' is supported
'i386' is supported
System architecture: 'arm'
Host architecture: 'i386'

You have not explicitly asked to use pkg-config and are cross-compiling.
pkg-config will not be used to automatically query cflag/lib parameters for
dependencies

Creating qmake. Please wait...
make: Nothing to be done for `first'.
floatmath auto-detection... ()
arm-marvell-linux-gnueabi-g++ -c -pipe -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -o floatmath.o floatmath.cpp
floatmath.cpp:44: warning: unused parameter 'argc'
floatmath.cpp:44: warning: unused parameter 'argv'
arm-marvell-linux-gnueabi-g++ -Wl,-O1 -o floatmath floatmath.o
floatmath enabled.
mmx auto-detection... ()
arm-marvell-linux-gnueabi-g++ -c -pipe -mmmx -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -o mmx.o mmx.cpp
cc1plus: error: unrecognized command line option "-mmmx"
make: *** [mmx.o] Error 1
mmx disabled.
:
:
{similarly for all other special processor options...}
:
:
neon auto-detection... ()
arm-marvell-linux-gnueabi-g++ -c -pipe -mfpu=neon -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -o neon.o neon.cpp
In file included from neon.cpp:42:
/home/user/pxalinux/toolchain/arm-marvell-linux-gnueabi/bin/../lib/gcc/arm-marvell-linux-gnueabi/4.2.0/include/arm_neon.h:35:2: error: #error You must enable NEON instructions (e.g. -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h
neon.cpp: In function 'int main(int, char**)':
neon.cpp:46: error: 'int32x4_t' was not declared in this scope
neon.cpp:46: error: expected `;' before 'null'
neon.cpp:49: error: 'null' was not declared in this scope
neon.cpp:49: error: 'vst1q_lane_s32' was not declared in this scope
make: *** [neon.o] Error 1
neon disabled.
ipc_sysv auto-detection... ()
arm-marvell-linux-gnueabi-g++ -c -pipe -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -o ipc.o ipc.cpp
arm-marvell-linux-gnueabi-g++ -Wl,-O1 -o ipc_sysv ipc.o
ipc_sysv enabled.
zlib auto-detection... ()
arm-marvell-linux-gnueabi-g++ -c -pipe -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -o zlib.o zlib.cpp
zlib.cpp:42:18: error: zlib.h: No such file or directory
zlib.cpp: In function 'int main(int, char**)':
zlib.cpp:46: error: 'z_streamp' was not declared in this scope
zlib.cpp:46: error: expected `;' before 'stream'
zlib.cpp:47: error: 'stream' was not declared in this scope
zlib.cpp:48: error: 'zlibVersion' was not declared in this scope
zlib.cpp:51: error: 'compress2' was not declared in this scope
make: *** [zlib.o] Error 1
zlib disabled.
DB2 auto-detection... ()
arm-marvell-linux-gnueabi-g++ -c -pipe -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -o db2.o db2.cpp
db2.cpp:42:20: error: sqlcli.h: No such file or directory
db2.cpp:43:21: error: sqlcli1.h: No such file or directory
make: *** [db2.o] Error 1
DB2 disabled.
InterBase auto-detection... ()
arm-marvell-linux-gnueabi-g++ -c -pipe -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -o ibase.o ibase.cpp
ibase.cpp:42:19: error: ibase.h: No such file or directory
make: *** [ibase.o] Error 1
InterBase disabled.
MySQL (thread-safe) auto-detection... ()
arm-marvell-linux-gnueabi-g++ -c -pipe -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -o mysql.o ../mysql/mysql.cpp
../mysql/mysql.cpp:42:19: error: mysql.h: No such file or directory
make: *** [mysql.o] Error 1
MySQL (thread-safe) disabled.
MySQL (thread-unsafe) auto-detection... ()
arm-marvell-linux-gnueabi-g++ -c -pipe -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -o mysql.o mysql.cpp
mysql.cpp:42:19: error: mysql.h: No such file or directory
make: *** [mysql.o] Error 1
MySQL (thread-unsafe) disabled.
OCI auto-detection... ()
arm-marvell-linux-gnueabi-g++ -c -pipe -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -o oci.o oci.cpp
oci.cpp:42:17: error: oci.h: No such file or directory
make: *** [oci.o] Error 1
OCI disabled.
ODBC auto-detection... ()
arm-marvell-linux-gnueabi-g++ -c -pipe -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -o odbc.o odbc.cpp
odbc.cpp:45:17: error: sql.h: No such file or directory
odbc.cpp:46:20: error: sqlext.h: No such file or directory
make: *** [odbc.o] Error 1
ODBC disabled.
iODBC auto-detection... ()
arm-marvell-linux-gnueabi-g++ -c -pipe -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -o iodbc.o iodbc.cpp
iodbc.cpp:42:17: error: sql.h: No such file or directory
iodbc.cpp:43:20: error: sqlext.h: No such file or directory
make: *** [iodbc.o] Error 1
iODBC disabled.
PostgreSQL auto-detection... ()
arm-marvell-linux-gnueabi-g++ -c -pipe -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -I/usr/include/postgresql -o psql.o psql.cpp
cc1plus: warning: include location "/usr/include/postgresql" is unsafe for cross-compilation
arm-marvell-linux-gnueabi-g++ -Wl,-O1 -o psql psql.o -L/usr/lib -lpq
/home/user/pxalinux/toolchain/arm-marvell-linux-gnueabi/bin/../lib/gcc/arm-marvell-linux-gnueabi/4.2.0/../../../../arm-marvell-linux-gnueabi/bin/ld: skipping incompatible /usr/lib/libpq.so when searching for -lpq
/home/user/pxalinux/toolchain/arm-marvell-linux-gnueabi/bin/../lib/gcc/arm-marvell-linux-gnueabi/4.2.0/../../../../arm-marvell-linux-gnueabi/bin/ld: skipping incompatible /usr/lib/libpq.a when searching for -lpq
/home/user/pxalinux/toolchain/arm-marvell-linux-gnueabi/bin/../lib/gcc/arm-marvell-linux-gnueabi/4.2.0/../../../../arm-marvell-linux-gnueabi/bin/ld: cannot find -lpq
collect2: ld returned 1 exit status
make: *** [psql] Error 1
PostgreSQL disabled.
SQLite2 auto-detection... ()
arm-marvell-linux-gnueabi-g++ -c -pipe -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -o sqlite2.o sqlite2.cpp
sqlite2.cpp:42:20: error: sqlite.h: No such file or directory
make: *** [sqlite2.o] Error 1
SQLite2 disabled.
unknown SQL driver: sqlite_symbian
unknown SQL driver: symsql
TDS auto-detection... ()
arm-marvell-linux-gnueabi-g++ -c -pipe -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -o tds.o tds.cpp
tds.cpp:42:22: error: sybfront.h: No such file or directory
tds.cpp:43:19: error: sybdb.h: No such file or directory
make: *** [tds.o] Error 1
TDS disabled.
D-Bus auto-detection... ()
arm-marvell-linux-gnueabi-g++ -c -pipe -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -o dbus.o dbus.cpp
dbus.cpp:43:23: error: dbus/dbus.h: No such file or directory
dbus.cpp:46:2: error: #error Needs at least dbus version 1
dbus.cpp: In function 'int main(int, char**)':
dbus.cpp:51: error: 'dbus_shutdown' was not declared in this scope
make: *** [dbus.o] Error 1
D-Bus disabled.
Glib auto-detection... ()
arm-marvell-linux-gnueabi-g++ -c -pipe -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -o glib.o glib.cpp
glib.cpp:44:18: error: glib.h: No such file or directory
glib.cpp: In function 'int main(int, char**)':
glib.cpp:49: error: 'GSource' was not declared in this scope
glib.cpp:49: error: 'source' was not declared in this scope
glib.cpp:50: error: 'GPollFD' was not declared in this scope
glib.cpp:50: error: 'pollfd' was not declared in this scope
glib.cpp:51: error: 'g_thread_supported' was not declared in this scope
glib.cpp:52: error: 'NULL' was not declared in this scope
glib.cpp:52: error: 'g_thread_init' was not declared in this scope
glib.cpp:53: error: 'g_main_context_default' was not declared in this scope
glib.cpp:54: error: 'g_source_new' was not declared in this scope
glib.cpp:55: error: 'g_source_add_poll' was not declared in this scope
make: *** [glib.o] Error 1
Glib disabled.
Glib support cannot be enabled due to functionality tests!
Turn on verbose messaging (-v) to ./configure to see the final report.
If you believe this message is in error you may use the continue
switch (-continue) to ./configure to continue.
-------------------------------------

Not sure why "Glib support cannot be enabled due to functionality tests"? Any help is appreciated.

Thanks much!

allamsetty
23rd March 2012, 19:49
I made further progress by providing the path to glib.h and other headers. I had to add library search path for the pre-built libraries provided by Marvell. These were under marvell toolchain. The modified configure arguments are as follows:

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

./configure -v -embedded arm -little-endian \
-no-fast -no-largefile -no-accessibility \
-xplatform qws/linux-arm-marvell-linux-gnueabi-g++ \
-no-declarative-debug \
-nomake demos -nomake examples -no-optimized-qmake \
-qt-gfx-linuxfb \
-no-freetype -prefix /home/user/qtembedded4.8 \
-hostprefix /home/user/qtembedded4.8 \
-debug -opensource -shared \
-webkit -no-qt3support -no-script \
-glib -phonon -phonon-backend \
-no-cups -no-nis -no-pch -no-iconv -reduce-relocations \
-depths 16 -qt-mouse-linuxinput -qt-kbd-linuxinput \
-L/home/user/pxalinux/package/gstreamer-M1.0.9/gst/gst/lib \
-L/home/user/pxalinux/package/gstreamer-M1.0.9/gst/gstdeps/lib \
-I /home/user/pxalinux/package/gstreamer-M1.0.9/gst/gst_include \
-I /home/user/pxalinux/package/graphics/libOpenVG/include \
-lglib-2.0 -lgthread-2.0 -lxml2 -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 \
-lgio-2.0

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

It compiled most of the Qt libraries, now it tries to compile JavaScriptCore as part of WebKit and running into compilation problems. Any ideas on how to fix this?


cd src/3rdparty/webkit/Source/ && make -f Makefile.WebKit
make[1]: Entering directory `/home/user/QtLibs4.8/qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source'
cd JavaScriptCore/ && make -f Makefile.WebKit
make[2]: Entering directory `/home/user/QtLibs4.8/qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/JavaScriptCore'
arm-marvell-linux-gnueabi-g++ -c -pipe -I/home/user/pxalinux/package/gstreamer-M1.0.9/gst/gst_include -I/home/user/pxalinux/package/graphics/libOpenVG/include -Wall -Wextra -Wreturn-type -fno-strict-aliasing -Wcast-align -Wchar-subscripts -Wformat-security -Wreturn-type -Wno-unused-parameter -Wno-sign-compare -Wno-switch -Wno-switch-enum -Wundef -Wmissing-noreturn -Winit-self -fvisibility=hidden -fvisibility-inlines-hidden -fPIC -D_REENTRANT -DNDEBUG -DBUILDING_QT__=1 -DQT_ASCII_CAST_WARNINGS -DENABLE_JIT=0 -DBUILDING_JavaScriptCore -DBUILDING_WTF -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I../../../../../mkspecs/qws/linux-arm-marvell-linux-gnueabi-g++ -I. -I../../../../../include/QtCore -I../../../../../include/QtNetwork -I../../../../../include -I. -I../../Source -I../ThirdParty -Iassembler -Ibytecode -Ibytecompiler -Iheap -Idfg -Idebugger -Iinterpreter -Ijit -Iparser -Iprofiler -Iruntime -Iwtf -Iwtf/gobject -I/home/user/QtLibs4.8/qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/JavaScriptCore/wtf/symbian -Iwtf/unicode -Iyarr -IAPI -IForwardingHeaders -Igenerated -I../../Source -I../../include -I/include/QtWebKit -I/include -I.moc/debug-static-emb-arm -o .obj/debug-static-emb-arm/YarrInterpreter.o yarr/YarrInterpreter.cpp
In file included from ./wtf/ASCIICType.h:32,
from ./wtf/text/StringImpl.h:27,
from ./runtime/UString.h:26,
from yarr/YarrPattern.h:30,
from yarr/YarrInterpreter.h:29,
from yarr/YarrInterpreter.cpp:28:
./wtf/Assertions.h:149: error: expected constructor, destructor, or type conversion before 'void'
./wtf/Assertions.h:150: error: expected constructor, destructor, or type conversion before 'void'
./wtf/Assertions.h:151: error: expected constructor, destructor, or type conversion before 'void'
./wtf/Assertions.h:152: error: expected constructor, destructor, or type conversion before 'void'
./wtf/Assertions.h:153: error: expected constructor, destructor, or type conversion before 'void'
./wtf/Assertions.h:154: error: expected constructor, destructor, or type conversion before 'void'
./wtf/Assertions.h:155: error: expected constructor, destructor, or type conversion before 'void'
./wtf/Assertions.h:156: error: expected constructor, destructor, or type conversion before 'void'
In file included from ./wtf/text/StringImpl.h:33,
from ./runtime/UString.h:26,
from yarr/YarrPattern.h:30,
from yarr/YarrInterpreter.h:29,
from yarr/YarrInterpreter.cpp:28:
./wtf/Vector.h: In member function 'void WTF::VectorBufferBase<T>::allocateBuffer(size_t)':
./wtf/Vector.h:282: error: there are no arguments to 'WTFReportBacktrace' that depend on a template parameter, so a declaration of 'WTFReportBacktrace' must be available
./wtf/Vector.h:282: error: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
./wtf/Vector.h: In member function 'void WTF::Vector<T, inlineCapacity>::append(const U*, size_t)':
./wtf/Vector.h:947: error: there are no arguments to 'WTFReportBacktrace' that depend on a template parameter, so a declaration of 'WTFReportBacktrace' must be available
./wtf/Vector.h: In member function 'void WTF::Vector<T, inlineCapacity>::insert(size_t, const U*, size_t)':
./wtf/Vector.h:1029: error: there are no arguments to 'WTFReportBacktrace' that depend on a template parameter, so a declaration of 'WTFReportBacktrace' must be available
In file included from ./runtime/UString.h:26,
from yarr/YarrPattern.h:30,
from yarr/YarrInterpreter.h:29,
from yarr/YarrInterpreter.cpp:28:
./wtf/text/StringImpl.h: In static member function 'static WTF::PassRefPtr<WTF::StringImpl> WTF::StringImpl::adopt(WTF::Vector<short unsigned int, inlineCapacity>&)':
./wtf/text/StringImpl.h:193: error: there are no arguments to 'WTFReportBacktrace' that depend on a template parameter, so a declaration of 'WTFReportBacktrace' must be available
In file included from yarr/YarrInterpreter.cpp:31:
./wtf/BumpPointerAllocator.h: In static member function 'static WTF::BumpPointerPool* WTF::BumpPointerPool::deallocCrossPool(WTF::BumpPo interPool*, void*)':
./wtf/BumpPointerAllocator.h:182: error: 'WTFReportBacktrace' was not declared in this scope
yarr/YarrInterpreter.cpp: In member function 'JSC::Yarr::Interpreter::DisjunctionContext* JSC::Yarr::Interpreter::allocDisjunctionContext(JS C::Yarr::ByteDisjunction*)':
yarr/YarrInterpreter.cpp:110: error: 'WTFReportBacktrace' was not declared in this scope
yarr/YarrInterpreter.cpp: In member function 'JSC::Yarr::Interpreter::ParenthesesDisjunctionCon text* JSC::Yarr::Interpreter::allocParenthesesDisjunctio nContext(JSC::Yarr::ByteDisjunction*, int*, JSC::Yarr::ByteTerm&)':
yarr/YarrInterpreter.cpp:160: error: 'WTFReportBacktrace' was not declared in this scope
yarr/YarrInterpreter.cpp: In member function 'int JSC::Yarr::Interpreter::interpret()':
yarr/YarrInterpreter.cpp:1391: error: 'WTFReportBacktrace' was not declared in this scope
/home/user/pxalinux/toolchain/arm-marvell-linux-gnueabi/bin/../lib/gcc/arm-marvell-linux-gnueabi/4.2.0/../../../../arm-marvell-linux-gnueabi/include/c++/4.2.0/bits/basic_string.h: In member function 'std::basic_string<_CharT, _Traits, _Alloc>::_Rep* std::basic_string<_CharT, _Traits, _Alloc>::_M_rep() const [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]':
/home/user/pxalinux/toolchain/arm-marvell-linux-gnueabi/bin/../lib/gcc/arm-marvell-linux-gnueabi/4.2.0/../../../../arm-marvell-linux-gnueabi/include/c++/4.2.0/bits/basic_string.h:483: instantiated from 'std::basic_string<_CharT, _Traits, _Alloc>::~basic_string() [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]'
../../../../../include/QtCore/../../src/corelib/tools/qstring.h:1045: instantiated from here
/home/user/pxalinux/toolchain/arm-marvell-linux-gnueabi/bin/../lib/gcc/arm-marvell-linux-gnueabi/4.2.0/../../../../arm-marvell-linux-gnueabi/include/c++/4.2.0/bits/basic_string.h:288: warning: cast from 'char*' to 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep*' increases required alignment of target type
./wtf/Vector.h: In member function 'void WTF::Vector<T, inlineCapacity>::append(const U*, size_t) [with U = JSC::Yarr::ByteDisjunction*, T = JSC::Yarr::ByteDisjunction*, unsigned int inlineCapacity = 0u]':
./wtf/Vector.h:1015: instantiated from 'void WTF::Vector<T, inlineCapacity>::append(const WTF::Vector<T, otherCapacity>&) [with unsigned int otherCapacity = 0u, T = JSC::Yarr::ByteDisjunction*, unsigned int inlineCapacity = 0u]'
yarr/YarrInterpreter.h:337: instantiated from here
./wtf/Vector.h:947: error: 'WTFReportBacktrace' was not declared in this scope
./wtf/Vector.h: In member function 'void WTF::Vector<T, inlineCapacity>::append(const U*, size_t) [with U = JSC::Yarr::CharacterClass*, T = JSC::Yarr::CharacterClass*, unsigned int inlineCapacity = 0u]':
./wtf/Vector.h:1015: instantiated from 'void WTF::Vector<T, inlineCapacity>::append(const WTF::Vector<T, otherCapacity>&) [with unsigned int otherCapacity = 0u, T = JSC::Yarr::CharacterClass*, unsigned int inlineCapacity = 0u]'
yarr/YarrInterpreter.h:338: instantiated from here
./wtf/Vector.h:947: error: 'WTFReportBacktrace' was not declared in this scope
./wtf/Vector.h: In member function 'void WTF::Vector<T, inlineCapacity>::append(const U*, size_t) [with U = JSC::Yarr::BeginChar, T = JSC::Yarr::BeginChar, unsigned int inlineCapacity = 0u]':
./wtf/Vector.h:1015: instantiated from 'void WTF::Vector<T, inlineCapacity>::append(const WTF::Vector<T, otherCapacity>&) [with unsigned int otherCapacity = 0u, T = JSC::Yarr::BeginChar, unsigned int inlineCapacity = 0u]'
yarr/YarrInterpreter.h:344: instantiated from here
./wtf/Vector.h:947: error: 'WTFReportBacktrace' was not declared in this scope
./wtf/Vector.h: In member function 'void WTF::VectorBufferBase<T>::allocateBuffer(size_t) [with T = JSC::Yarr::CharacterClass*]':
:
:
:

allamsetty
25th March 2012, 20:32
I tried to work-around these errors, but got into some other errors...

So, I removed qt-webkit from the configure command and now, all the libraries are building fine. I had to fix one thing as explained in the fix here:

https://bugreports.qt-project.org/browse/QTBUG-9794?page=com.atlassian.jira.plugin.system.issueta bpanels:all-tabpanel

I need to re-visit qt-webkit later. Or may be build all the libraries using an older version of Qt Libs, say, 4.7.3....

Added after 7 minutes:

Just a note that if you use the configure script provided above, it will fail when building moc, uic, rcc tools. The -l options provided in configure script apply to all Makefiles, so they get into Makefiles that don't need them as well. Just edit the Makefiles in these tool directories: src/tools/<moc,uic,rcc>/Makefile and remove the -l libraries from LIBS macro.