Building Qt 5.2.0 for Beagleboard on Windows



  • hello,

    I`m trying to compile Qt 5.2.0 static with Sourcery CodeBench for a Beaglebone and it works without any error. But if I want to use the compiled Version in QT with the compiler arm-none-eabi-g++ or arm-none-gnueabi-g++ i get this error:

    process_begin: CreateProcess(NULL, C:\Sourcery_standard\bin\arm-none-linux-eabi-g++.exe -c -pipe -march=armv7-a -mtune=cortex-a8 -mfloat-abi=hard -g -Wall -W -fPIE -DQT_STATIC_BUILD -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -I..\qt-everywhere-opensource-src-5.2.0_9Versuch\qtbase\mkspecs\linux-arm-gnueabi-g++ -I..\untitled3 -I. -o main.obj ..\untitled3\main.cpp, ...) failed.
    make (e=2): Das System kann die angegebene Datei nicht finden.
    make: *** [main.obj] Error 2
    16:03:23: Der Prozess "C:\Sourcery_standard\bin\make.exe" wurde mit dem Rückgabewert 2 beendet.
    I'm using windows 7 with Qt 5.2.0

    May you help me?

    sincerly Yours
    Michael Endres

    apendix:
    qmake.conf:

    qmake configuration for building with arm-linux-gnueabi-g++

    MAKEFILE_GENERATOR = UNIX
    CONFIG += incremental gdb_dwarf_index
    QMAKE_INCREMENTAL_STYLE = sublib

    include(../common/linux.conf)
    include(../common/gcc-base-unix.conf)
    include(../common/g++-unix.conf)

    modifications to g++.conf

    QMAKE_CC = C:\Sourcery_standard\bin\arm-none-linux-eabi-gcc
    QMAKE_CXX = C:\Sourcery_standard\bin\arm-none-linux-eabi-g++
    QMAKE_LINK = C:\Sourcery_standard\bin\arm-none-linux-eabi-g++
    QMAKE_LINK_SHLIB = C:\Sourcery_standard\bin\arm-linux-eabi-g++

    modifications to linux.conf

    QMAKE_AR = C:\Sourcery_standard\bin\arm-none-linux-eabi-ar cqs
    QMAKE_OBJCOPY = C:\Sourcery_standard\bin\arm-none-linux-eabi-objcopy
    QMAKE_NM = C:\Sourcery_standard\bin\arm-none-linux-eabi-nm -P
    QMAKE_STRIP = C:\Sourcery_standard\bin\arm-none-linux-eabi-strip
    COMPILER_FLAGS = -march=armv7-a -mtune=cortex-a8 -mfloat-abi=hard
    QMAKE_LIBS += -lrt -lpthread -ldl
    QMAKE_CFLAGS += $${COMPILER_FLAGS}
    QMAKE_CXXFLAGS += $${COMPILER_FLAGS}
    QMAKE_CXXFLAGS_RELEASE += -O3

    QMAKE_CFLAGS_RELEASE = -Os -momit-leaf-frame-pointer
    QMAKE_LFLAGS = -static -static-libgcc
    DEFINES += QT_STATIC_BUILD
    load(qt_config)

    configure.exe:
    C:\qt-everywhere-opensource-src-5.2.0_10Versuch\qtbase>configure.exe -embedded -
    platform win32-g++ -xplatform linux-arm-gnueabi-g++ -no-angle -opengl desktop -s
    tatic



  • i`ve found the mistake... the name of the compiler was wrong. the correct name is arm-none-linux-gnueabi-g++.
    But now i have a new problem in configure.exe :

    C:\qt-everywhere-opensource-src-5.2.0_12Versuch\qtbase>configure -embedded -plat
    form win32-g++ -xplatform linux-arm-gnueabi-g++ -no-angle -opengl desktop -stati
    c -opensource -nomake examples

    This is the Qt for Windows Open Source Edition.

    You are licensed to use this software under the terms of
    the GNU Lesser General Public License (LGPL) version 2.1.

    Type 'L' to view the Lesser GNU General Public License version 2.1 (LGPLv2.1).
    Type 'y' to accept this license offer.
    Type 'n' to decline this license offer.

    Do you accept the terms of the license?
    y
    Creating qmake...
    mingw32-make: Nothing to be done for 'first'.
    Running configuration tests...
    c:/sourcery_standard/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.1/../../../../arm
    -none-linux-gnueabi/bin/ld.exe: error: arch.obj uses VFP register arguments, arc
    h does not
    c:/sourcery_standard/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.1/../../../../arm
    -none-linux-gnueabi/bin/ld.exe: failed to merge target specific data of file arc
    h.obj
    collect2.exe: error: ld returned 1 exit status
    mingw32-make: *** [arch] Error 1
    Could not find output file: No such file or directory

    Any Ideas?

    ###########

    qmake configuration for building with arm-linux-gnueabi-g++

    MAKEFILE_GENERATOR = UNIX
    CONFIG += incremental gdb_dwarf_index
    QMAKE_INCREMENTAL_STYLE = sublib

    include(../common/linux.conf)
    include(../common/gcc-base-unix.conf)
    include(../common/g++-unix.conf)

    modifications to g++.conf

    QMAKE_CC = C:\Sourcery_standard\bin\arm-none-linux-gnueabi-gcc.exe
    QMAKE_CXX = C:\Sourcery_standard\bin\arm-none-linux-gnueabi-g++.exe
    QMAKE_LINK = C:\Sourcery_standard\bin\arm-none-linux-gnueabi-g++.exe
    QMAKE_LINK_SHLIB = C:\Sourcery_standard\bin\arm-none-linux-gnueabi-g++.exe

    modifications to linux.conf

    QMAKE_AR = C:\Sourcery_standard\bin\arm-none-linux-gnueabi-ar.exe cqs
    QMAKE_OBJCOPY = C:\Sourcery_standard\bin\arm-none-linux-gnueabi-objcopy.exe
    QMAKE_NM = C:\Sourcery_standard\bin\arm-none-linux-gnueabi-nm.exe -P
    QMAKE_STRIP = C:\Sourcery_standard\bin\arm-none-linux-gnueabi-strip.exe
    COMPILER_FLAGS = -march=armv7-a -mtune=cortex-a8 -mfloat-abi=hard -mthumb
    QMAKE_CFLAGS += $${COMPILER_FLAGS}
    QMAKE_CXXFLAGS += $${COMPILER_FLAGS}
    QMAKE_CXXFLAGS_RELEASE += -O3

    QMAKE_CFLAGS_RELEASE = -Os -momit-leaf-frame-pointer
    QMAKE_LFLAGS = -static -static-libgcc
    DEFINES += QT_STATIC_BUILD
    load(qt_config)



  • Check your COMPILER_FLAGS variable in the qmake.conf file.

    The option '-mfloat-abi=' needs to match your toolchain type. The default for qtbase/mkspecs/devices/linux-beagleboard-g++/qmake.conf is 'softfp', but I had to change mine for the linaro toolchain to 'hard'



  • can you post your qmake.conf?



  • Hi,

    I have a simlilar problem.


    Error message:
    Der Befehl "test" ist entweder falsch geschrieben oder
    konnte nicht gefunden werden.
    Ein Unterverzeichnis oder eine Datei mit dem Namen "qtbase" existiert bereits.
    Folgender Fehler trat auf: qtbase.
    makefile:60: recipe for target 'module-qtbase-make_first' failed
    mingw32-make: *** [module-qtbase-make_first] Error 1
    mingw32-make: Target 'first' not remade because of errors


    System:
    Windows 7 Enterprise
    Qt 5.2.0
    Linaro Toolchain (https://launchpad.net/linaro-toolchain-binaries/+download)
    http://download.qt-project.org/official_releases/qt/5.2/5.2.1/single/qt-everywhere-opensource-src-5.2.1.zip


    My compile script:

    echo "Qt static Cross-Compiler
    @ECHO off

    :: In den Ordner springen
    @if NOT exist "C:\Qt_BBB" mkdir "C:\Qt_BBB"
    @cd "C:\Qt_BBB"

    :: alten Ordner löschen => entzippen
    @if exist qt-everywhere-opensource-src-5.2.1 rm -R qt-everywhere-opensource-src-5.2.1
    "C:\Program Files (x86)\7-Zip\7z.exe" x qt-everywhere-opensource-src-5.2.1.zip

    :: 1. Ordner kopieren (Remote PC)
    cd "C:\Qt_BBB\qt-everywhere-opensource-src-5.2.1\qtbase\mkspecs\devices"
    @if exist "linux-beaglebone-g++" rm -R linux-beaglebone-g++
    @if NOT exist "linux-beaglebone-g++" mkdir "linux-beaglebone-g++"
    xcopy "C:\Qt_BBB\linux-beaglebone-g++*" ".\linux-beaglebone-g++" /S/E

    :: 2. Ordner kopieren (PC Plattform)
    cd "C:\Qt_BBB\qt-everywhere-opensource-src-5.2.1\qtbase\mkspecs"
    ::@if exist "win32-beaglebone-g++" rm -R win32-beaglebone-g++
    ::@if NOT exist "win32-beaglebone-g++" mkdir "win32-beaglebone-g++"
    @if exist "win32-g++" rm -R win32-g++
    @if NOT exist "win32-g++" mkdir "win32-g++"
    xcopy "C:\Qt_BBB\win32-g++*" ".\win32-g++" /S/E

    :: 3. Ordner kopieren

    @if exist "linux-linaro-gnueabihf-g++" rm -R linux-linaro-gnueabihf-g++
    @if NOT exist "linux-linaro-gnueabihf-g++" mkdir "linux-linaro-gnueabihf-g++"
    xcopy "C:\Qt_BBB\linux-linaro-gnueabi-g++*" ".\linux-linaro-gnueabihf-g++" /S/E

    :: Umgebungsvariable setzen
    ::SET PATH=C:\Qt_BBB\qt-everywhere-opensource-src-5.2.1;C:\Qt\Tools\mingw48_32\bin;C:\Qt\Tools\mingw48_32\opt\bin;C:\Windows\system32;C:\Windows
    SET PATH=C:\Qt_BBB\qt-everywhere-opensource-src-5.2.1;C:\Qt\Tools\mingw48_32\bin;C:\Qt\Tools\mingw48_32\opt\bin;C:\Windows\system32;C:\Windows;"C:\Program Files (x86)\Linaro\gcc-linaro-arm-linux-gnueabihf-4.8-2013.10";"C:\Program Files (x86)\Linaro\gcc-linaro-arm-linux-gnueabihf-4.8-2013.10\bin";"C:\Qt_BBB\qt-everywhere-opensource-src-5.2.1\qtbase\config.tests\arch"
    SET LANG="en"

    SET QT_INSTALL_PREFIX=C:\Qt_BBB\Qt_Static_Win

    cd "C:\Qt_BBB"
    @if NOT exist "Qt_Static_Win" mkdir "."

    :: Arch Dateien einbinden
    cd "C:\Qt_BBB\qt-everywhere-opensource-src-5.2.1\qtbase\config.tests\arch"
    xcopy "C:\Qt_BBB\build*" "." /S/E

    :: Qt configurieren
    cd "C:\Qt_BBB\qt-everywhere-opensource-src-5.2.1"

    ::@if exist "configure.bat" rm configure.bat
    xcopy "C:\Qt_BBB\configure.bat" "." /S/E/Y

    configure.bat -static -debug-and-release -platform win32-g++ -prefix "C:\Qt_BBB\Qt_Static_Win" -xplatform linux-linaro-gnueabihf-g++ -device linux-beaglebone-g++ -device-option CROSS_COMPILE="C:\Linaro\gcc-linaro-arm-linux-gnueabihf-4.8-2013.10\bin\arm-linux-gnueabihf-" -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -no-openssl -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests
    ::configure.bat -static -debug-and-release -platform win32-beaglebone-g++ -prefix "C:\Qt_BBB\Qt_Static_Win" -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -no-openssl -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests
    :: Wie bei Windows mit Static (funktioniert)
    ::configure.bat -static -debug-and-release -platform win32-g++ -prefix "C:\Qt_BBB\Qt_Static_Win" -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -no-openssl -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests

    :: LINUX
    :: –prefix /usr/local/qt-5.2 -xplatform linux-linaro-gnueabihf-g++ -device linux-beaglebone-g++ -device-option CROSS_COMPILE=/usr/local/linaro/bin/arm-linux-gnueabihf- -qt-zlib -qt-libpng -qt-libjpeg -opensource -confirm-license -no-largefile -no-accessibility -no-gif -no-nis -no-cups -v

    :: Static
    :: -static -debug-and-release -platform win32-g++ -prefix $QtDir -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -no-openssl -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests

    :: Bauen
    mingw32-make -k -j4

    :: Qt_Static_Win statt src !!!

    :: Datei anpassen für Qt Static
    ::cd "C:\Qt_BBB\Qt_Static_Win\qtbase\mkspecs"
    ::SET "ziel_datei=.\win32-beaglebone-g++\qmake.conf"

    ::ECHO CONFIG += static >> %ziel_datei%




  • File modifications:

    => linux-beagleboard-g++
    C:\Qt_BBB\linux-beaglebone-g++\qmake.conf

    modified

    COMPILER_FLAGS = -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard

    add

    [QT-STATIC-PATCH]

    QMAKE_LFLAGS += -static -static-libgcc
    QMAKE_CFLAGS_RELEASE -= -O2
    QMAKE_CFLAGS_RELEASE += -Os -momit-leaf-frame-pointer
    DEFINES += QT_STATIC_BUILD

    => linux-arm-gnueabi-g++
    C:\Qt_BBB\linux-linaro-gnueabihf-g++\qmake.conf

    add

    [QT-STATIC-PATCH]

    QMAKE_LFLAGS += -static -static-libgcc
    QMAKE_CFLAGS_RELEASE -= -O2
    QMAKE_CFLAGS_RELEASE += -Os -momit-leaf-frame-pointer
    DEFINES += QT_STATIC_BUILD

    => win32-g++
    C:\Qt_BBB\win32-g++\qmake.conf

    add

    [QT-STATIC-PATCH]

    QMAKE_LFLAGS += -static -static-libgcc
    QMAKE_CFLAGS_RELEASE -= -O2
    QMAKE_CFLAGS_RELEASE += -Os -momit-leaf-frame-pointer
    DEFINES += QT_STATIC_BUILD

    ===============================

    I compiled Arch.pro with static settings.

    Have everybody cross compile from Win 7 to BBB?

    Thank you for helping.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.