Qt dla architektury MIPS

0

Witam

Potrzebuje. stworzyć biblioteke Qt, wraz ze środowiskiem dla architektury MIPS na aplikacje konsolowe. Target korzysta z OpenWRT i korzystam również z gotowego toolchain ze strony openWRT uclibc. nie działa jednak u mnie polecenie .configure które jest w temacie zadziałało same ./configure embedded mips

Link do toolchain-a

http://downloads.openwrt.org/latest/ramips/mt7620a/OpenWrt-Toolchain-ramips-for-mipsel_24kec%2bdsp-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2

Link do tematu, w którym znalazłem wskazówki.

http://www.qtcentre.org/threads/36300-QT-Embedded-For-MIPS-quot-linux-mips-g-quot-not-found

Proszę o jakieś sugestie

Pozdrawiam

0

NIE DZIAŁA to nie opis problemu.
Aż tak trudno zrobić copy paste z konsoli?

Nie rozumiem, zabierasz się za poważna sprawę (nie newbie), zarejestrowany jesteś od prawie roku i nadal nie nauczyłeś się dobrze zadawać pytań?

0

Przepraszam, za nieścisłości. Miałem wczoraj już mało czasu i chciałem tylko w minimalny sposób zacząć temat, ponieważ czasem jest tak, że ktoś skojarzy pewne fakty i zna odpowiedź. Dziś podszedłem na spokojnie do tematu i konfiguracja z poniższym poleceniem uruchomiła się kompletnie, ale podczas make wystąpił błąd:

/configure -embedded mips -xplatform qws/linux-mips-g++ -little-endian

Więc tak. To pobieram versja Qt 4.x

git clone git://code.qt.io/qt/qt.git

Plik

/qt/mkspecs/qws/linux-mips-g++/qmake.conf Zmieniam na

#
# qmake configuration for building with mipsel-linux-g++
#

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

# modifications to g++.conf
QMAKE_CC                = mipsel-openwrt-linux-uclibc-mips-gcc
QMAKE_CXX               = mipsel-openwrt-linux-uclibc-g++
QMAKE_CFLAGS        += -mips32
QMAKE_CXXFLAGS     += -mips32
QMAKE_LINK              = mipsel-openwrt-linux-uclibc-g++
QMAKE_LINK_SHLIB        = mipsel-openwrt-linux-uclibc-g++

# modifications to linux.conf
QMAKE_AR                = mipsel-openwrt-linux-uclibc-ar cqs
QMAKE_OBJCOPY      = mipsel-openwrt-linux-uclibc-objcopy 
QMAKE_STRIP             = mipsel-openwrt-linux-strip

load(qt_config)

Błąd

make[1]: mipsel-openwrt-linux-uclibc-mips-gcc: Polecenie nie znalezione
Makefile polecenia dla obiektu '.obj/release-shared-emb-mips/qatomic_mips32.o' nie powiodły się
make[1]: *** [.obj/release-shared-emb-mips/qatomic_mips32.o] Błąd 127
make[1]: Opuszczenie katalogu '/home/rafal/Pulpit/qt/src/corelib'
Makefile polecenia dla obiektu 'sub-corelib-make_default-ordered' nie powiodły się

Kompilator jest dodany do zmiennych systemowych, więc nie trzeba posługiwać się ścieżką bezwzględną

Generalnie zastanawiam się jaki uzyskam efekt, jak to zadziała ? Czy wszystkie biblioteki dzielone takie jak np QtCore.so QtNetwork.so będą już skompilowane dla Architektury MIPS ?

0

No to teraz wyraźnie widać, że nie masz zainstalowanych wszystkich narzędzi.
Googlanie mipsel-openwrt-linux-uclibc-mips-gcc wskazało taki artykuł: https://forum.openwrt.org/viewtopic.php?id=25938

0

Dziękuje za link. Naprowadził mnie na pewne kroki, które posunęły mnie dalej. Jednak nie ma tak prosto. Po uprzednim błędzie zmieniłem zmienne systemowe tak aby wskazywały na nowy toolchain. Wykonałem w katalogu qt make clean,** nie zmieniając** treści pliku qmake.conf, ponieważ nazwy kompilatorów się nie zmieniły.

Zatem zmienne systemowe

export PATH=$HOME/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/OpenWrt-Toolchain-ramips-for-mipsel_24kec+dsp-gcc-4.8-linaro_uClibc-0.9.33.2/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin:$PATH

export STAGING_DIR=$HOME/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/OpenWrt-Toolchain-ramips-for-mipsel_24kec+dsp-gcc-4.8-linaro_uClibc-0.9.33.2/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/

Błąd dalej

se-shared-emb-mips/qatomic_mips32.o arch/mips/qatomic_mips32.s
make[1]: mipsel-openwrt-linux-uclibc-mips-gcc: Polecenie nie znalezione
Makefile polecenia dla obiektu '.obj/release-shared-emb-mips/qatomic_mips32.o' nie powiodły się
make[1]: *** [.obj/release-shared-emb-mips/qatomic_mips32.o] Błąd 127
make[1]: Opuszczenie katalogu '/home/rafal/Pulpit/qt/src/corelib'
Makefile polecenia dla obiektu 'sub-corelib-make_default-ordered' nie powiodły się
make: *** [sub-corelib-make_default-ordered] Błąd 2

Należało zbudować toolchain za pomocą buildroot z OpenWRT. Problem teraz polega na tym, że jest tam kilka katalogów z plikami binarnymi które odpowiadałyby kross kompilatorowi. Przed wszystkim
mamy przydługa ścieżkę do katalogu gdzie mamy pliki

/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/OpenWrt-Toolchain-ramips-for-mipsel_24kec+dsp-gcc-4.8-linaro_uClibc-0.9.33.2/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/mipsel-openwrt-linux/bin$ ls -l
razem 15380
-rwxr-xr-x 1 rafal rafal 1111856 lip 7 14:49 ar
-rwxr-xr-x 1 rafal rafal 1790832 lip 7 14:49 as
-rwxr-xr-x 2 rafal rafal 665672 lip 7 14:49 c++
-rwxr-xr-x 2 rafal rafal 665672 lip 7 14:49 g++
-rwxr-xr-x 1 rafal rafal 665672 lip 7 14:49 gcc
-rwxr-xr-x 1 rafal rafal 2192240 lip 7 14:49 ld
-rwxr-xr-x 1 rafal rafal 2192240 lip 7 14:49 ld.bfd
-rwxr-xr-x 1 rafal rafal 1095400 lip 7 14:49 nm
-rwxr-xr-x 1 rafal rafal 1307688 lip 7 14:49 objcopy
-rwxr-xr-x 1 rafal rafal 1611240 lip 7 14:49 objdump
-rwxr-xr-x 1 rafal rafal 1111856 lip 7 14:49 ranlib
-rwxr-xr-x 1 rafal rafal 1307688 lip 7 14:49 strip

Te same pliki ale z biblioteką uclibc znajdują się z kolei w katalogu

/mipsel-openwrt-linux-uclibc

Natomiast równie dobrze znajdziemy potęcjalne pliki w (to te do których jest zmienna)

~/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/OpenWrt-Toolchain-ramips-for-mipsel_24kec+dsp-gcc-4.8-linaro_uClibc-0.9.33.2/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin$ ls -l
razem 27920
-rwxr-xr-x 1 rafal rafal 31876 cze 24 20:26 ldd
lrwxrwxrwx 1 rafal rafal 37 cze 24 20:26 mipsel-openwrt-linux-addr2line -> mipsel-openwrt-linux-uclibc-addr2line
lrwxrwxrwx 1 rafal rafal 30 cze 24 20:26 mipsel-openwrt-linux-ar -> mipsel-openwrt-linux-uclibc-ar
lrwxrwxrwx 1 rafal rafal 30 cze 24 20:26 mipsel-openwrt-linux-as -> mipsel-openwrt-linux-uclibc-as
lrwxrwxrwx 1 rafal rafal 31 cze 24 20:26 mipsel-openwrt-linux-c++ -> mipsel-openwrt-linux-uclibc-c++
lrwxrwxrwx 1 rafal rafal 35 cze 24 20:26 mipsel-openwrt-linux-c++filt -> mipsel-openwrt-linux-uclibc-c++filt
lrwxrwxrwx 1 rafal rafal 31 cze 24 20:26 mipsel-openwrt-linux-cpp -> mipsel-openwrt-linux-uclibc-cpp
lrwxrwxrwx 1 rafal rafal 35 cze 24 20:26 mipsel-openwrt-linux-elfedit -> mipsel-openwrt-linux-uclibc-elfedit
lrwxrwxrwx 1 rafal rafal 31 cze 24 20:26 mipsel-openwrt-linux-g++ -> mipsel-openwrt-linux-uclibc-g++
lrwxrwxrwx 1 rafal rafal 31 cze 24 20:26 mipsel-openwrt-linux-gcc -> mipsel-openwrt-linux-uclibc-gcc
lrwxrwxrwx 1 rafal rafal 37 cze 24 20:26 mipsel-openwrt-linux-gcc-4.8.3 -> mipsel-openwrt-linux-uclibc-gcc-4.8.3
lrwxrwxrwx 1 rafal rafal 34 cze 24 20:26 mipsel-openwrt-linux-gcc-ar -> mipsel-openwrt-linux-uclibc-gcc-ar
lrwxrwxrwx 1 rafal rafal 34 cze 24 20:26 mipsel-openwrt-linux-gcc-nm -> mipsel-openwrt-linux-uclibc-gcc-nm
lrwxrwxrwx 1 rafal rafal 38 cze 24 20:26 mipsel-openwrt-linux-gcc-ranlib -> mipsel-openwrt-linux-uclibc-gcc-ranlib
lrwxrwxrwx 1 rafal rafal 32 cze 24 20:26 mipsel-openwrt-linux-gcov -> mipsel-openwrt-linux-uclibc-gcov
lrwxrwxrwx 1 rafal rafal 31 cze 24 20:26 mipsel-openwrt-linux-gdb -> mipsel-openwrt-linux-uclibc-gdb
lrwxrwxrwx 1 rafal rafal 33 cze 24 20:26 mipsel-openwrt-linux-gprof -> mipsel-openwrt-linux-uclibc-gprof
lrwxrwxrwx 1 rafal rafal 30 cze 24 20:26 mipsel-openwrt-linux-ld -> mipsel-openwrt-linux-uclibc-ld
lrwxrwxrwx 1 rafal rafal 34 cze 24 20:26 mipsel-openwrt-linux-ld.bfd -> mipsel-openwrt-linux-uclibc-ld.bfd
lrwxrwxrwx 1 rafal rafal 30 cze 24 20:26 mipsel-openwrt-linux-nm -> mipsel-openwrt-linux-uclibc-nm
lrwxrwxrwx 1 rafal rafal 35 cze 24 20:26 mipsel-openwrt-linux-objcopy -> mipsel-openwrt-linux-uclibc-objcopy
lrwxrwxrwx 1 rafal rafal 35 cze 24 20:26 mipsel-openwrt-linux-objdump -> mipsel-openwrt-linux-uclibc-objdump
lrwxrwxrwx 1 rafal rafal 34 cze 24 20:26 mipsel-openwrt-linux-ranlib -> mipsel-openwrt-linux-uclibc-ranlib
lrwxrwxrwx 1 rafal rafal 35 cze 24 20:26 mipsel-openwrt-linux-readelf -> mipsel-openwrt-linux-uclibc-readelf
lrwxrwxrwx 1 rafal rafal 32 cze 24 20:26 mipsel-openwrt-linux-size -> mipsel-openwrt-linux-uclibc-size
lrwxrwxrwx 1 rafal rafal 35 cze 24 20:26 mipsel-openwrt-linux-strings -> mipsel-openwrt-linux-uclibc-strings
lrwxrwxrwx 1 rafal rafal 33 cze 24 20:26 mipsel-openwrt-linux-strip -> mipsel-openwrt-linux-uclibc-strip
-rwxr-xr-x 1 rafal rafal 1079016 lip 7 14:49 mipsel-openwrt-linux-uclibc-addr2line
-rwxr-xr-x 1 rafal rafal 1111856 lip 7 14:49 mipsel-openwrt-linux-uclibc-ar
lrwxrwxrwx 1 rafal rafal 38 lip 7 14:49 mipsel-openwrt-linux-uclibc-as -> mipsel-openwrt-linux-uclibc-wrapper.sh
-rwxr-xr-x 1 rafal rafal 1790832 lip 7 14:49 mipsel-openwrt-linux-uclibc-as.bin
lrwxrwxrwx 1 rafal rafal 38 lip 7 14:49 mipsel-openwrt-linux-uclibc-c++ -> mipsel-openwrt-linux-uclibc-wrapper.sh
-rwxr-xr-x 2 rafal rafal 665672 lip 7 14:49 mipsel-openwrt-linux-uclibc-c++.bin
lrwxrwxrwx 1 rafal rafal 38 lip 7 14:49 mipsel-openwrt-linux-uclibc-cc -> mipsel-openwrt-linux-uclibc-wrapper.sh
-rwxr-xr-x 1 rafal rafal 1077864 lip 7 14:49 mipsel-openwrt-linux-uclibc-c++filt
lrwxrwxrwx 1 rafal rafal 38 lip 7 14:49 mipsel-openwrt-linux-uclibc-cpp -> mipsel-openwrt-linux-uclibc-wrapper.sh
-rwxr-xr-x 1 rafal rafal 665672 lip 7 14:49 mipsel-openwrt-linux-uclibc-cpp.bin
-rwxr-xr-x 1 rafal rafal 29216 lip 7 14:49 mipsel-openwrt-linux-uclibc-elfedit
lrwxrwxrwx 1 rafal rafal 38 lip 7 14:49 mipsel-openwrt-linux-uclibc-g++ -> mipsel-openwrt-linux-uclibc-wrapper.sh
-rwxr-xr-x 2 rafal rafal 665672 lip 7 14:49 mipsel-openwrt-linux-uclibc-g++.bin
lrwxrwxrwx 1 rafal rafal 38 lip 7 14:49 mipsel-openwrt-linux-uclibc-gcc -> mipsel-openwrt-linux-uclibc-wrapper.sh
-rwxr-xr-x 2 rafal rafal 665672 lip 7 14:49 mipsel-openwrt-linux-uclibc-gcc-4.8.3
-rwxr-xr-x 1 rafal rafal 25416 lip 7 14:49 mipsel-openwrt-linux-uclibc-gcc-ar
-rwxr-xr-x 2 rafal rafal 665672 lip 7 14:49 mipsel-openwrt-linux-uclibc-gcc.bin
-rwxr-xr-x 1 rafal rafal 25416 lip 7 14:49 mipsel-openwrt-linux-uclibc-gcc-nm
-rwxr-xr-x 1 rafal rafal 25416 lip 7 14:49 mipsel-openwrt-linux-uclibc-gcc-ranlib
-rwxr-xr-x 1 rafal rafal 290496 lip 7 14:49 mipsel-openwrt-linux-uclibc-gcov
-rwxr-xr-x 1 rafal rafal 5157936 lip 7 14:49 mipsel-openwrt-linux-uclibc-gdb
-rwxr-xr-x 1 rafal rafal 1157480 lip 7 14:49 mipsel-openwrt-linux-uclibc-gprof
lrwxrwxrwx 1 rafal rafal 38 lip 7 14:49 mipsel-openwrt-linux-uclibc-ld -> mipsel-openwrt-linux-uclibc-wrapper.sh
-rwxr-xr-x 1 rafal rafal 2192240 lip 7 14:49 mipsel-openwrt-linux-uclibc-ld.bfd
-rwxr-xr-x 1 rafal rafal 2192240 lip 7 14:49 mipsel-openwrt-linux-uclibc-ld.bin
-rwxr-xr-x 1 rafal rafal 1095400 lip 7 14:49 mipsel-openwrt-linux-uclibc-nm
-rwxr-xr-x 1 rafal rafal 1307688 lip 7 14:49 mipsel-openwrt-linux-uclibc-objcopy
-rwxr-xr-x 1 rafal rafal 1611240 lip 7 14:49 mipsel-openwrt-linux-uclibc-objdump
-rwxr-xr-x 1 rafal rafal 1111856 lip 7 14:49 mipsel-openwrt-linux-uclibc-ranlib
-rwxr-xr-x 1 rafal rafal 407856 lip 7 14:49 mipsel-openwrt-linux-uclibc-readelf
-rwxr-xr-x 1 rafal rafal 1082344 lip 7 14:49 mipsel-openwrt-linux-uclibc-size
-rwxr-xr-x 1 rafal rafal 1079976 lip 7 14:49 mipsel-openwrt-linux-uclibc-strings
-rwxr-xr-x 1 rafal rafal 1307688 lip 7 14:49 mipsel-openwrt-linux-uclibc-strip
-rwxr-xr-x 1 rafal rafal 2887 cze 24 19:03 mipsel-openwrt-linux-uclibc-wrapper.sh

Co ciekawe w samym katalogu budującym mamy osobny folder z toolchainem

/openwrt/build_dir$ ls -l
razem 12
drwxr-xr-x 41 rafal rafal 4096 lip 7 13:58 host
drwxr-xr-x 49 rafal rafal 4096 lip 7 14:49 target-mipsel_24kec+dsp_uClibc-0.9.33.2
drwxr-xr-x 12 rafal rafal 4096 cze 24 19:53 toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2 // katalog o ktorym pisze powyzej

ale nie ma w nim binarek z toolchaina sa one w drzewie z target-mipsel_24kec+dsp_uClibc-0.9.33.2 co widać powyżej.

Teraz pytanie co w końcu użyć ? I czy komenda konfiguracyjna która wprowadzam jest poprawna. Szczególnie mnie zastanawia kolejność bajtów

EDIT:

Chyba wiem gdzie problem. Zauważ, że nie można wykonać polecenia dla

mipsel-openwrt-linux-uclibc-mips-gcc
. Przeszukałem cały skmpilowany toolchain i nic takiego nie występuje. Zastanawiam się czy kompilator qt w miejsce gcc, g++ nie dopisuje
mips-gcc
. Dlatego też nie może znalejźć polecenia bo poleceniem jest
mipsel-openwrt-linux-uclibc-gcc
.
Dodam, że kompilator działa np po poleceniu

mipsel-openwrt-linux-uclibc-gcc plik.c -o gotowy_program

1 użytkowników online, w tym zalogowanych: 0, gości: 1