Russian Qt Forum
Ноябрь 22, 2024, 23:36
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Qt Embedded
>
Сборка под ARM.
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Сборка под ARM. (Прочитано 20682 раз)
Павел_F.
Гость
Сборка под ARM.
«
:
Март 25, 2010, 13:46 »
Изначальные данные:
Есть Windows 7 и настроенный Sourcery G++ Lite. Вполне успешно компилю проги написанные на с++ все пока замечательно.
Есть мысль использовать в нашей железке Qt.
Скачал по ссылке с офф сайта qt-everywhere-opensource-src-4.6.2.tar.gz как я понял у них сейчас один архив для всех. Ибо по другой ссылке для windows я скачал его же.
Теперь, следую мануалу с офф сайта делаю:
Иду в QtDir/mkspecs/qws/linux-arm-g++ и правлю в qmake.conf. Меняю по файлу *arm-linux-* на свои *arm-none-linux-gnueabi-*
сделал себе батник:
Код
Bash
set
PATH
=D:\SourceryG++Lite;
%
PATH
%
set
QMAKESPEC
=win32-g++
cmd.exe
Запустил его. В появившейся консоли пишу configure -embedded arm -xplatform qws/linux-arm-g++.
В ответ получаю:
Unknown option arm
Invalid option "qws/linux-arm-g++" for -xplatform
Ну и далее перечисление возможных опций...
Что я делаю не так? Уже два для гуглю и читаю все подряд. Нигде решения не нашел.
Записан
Rcus
Гость
Re: Сборка под ARM.
«
Ответ #1 :
Март 25, 2010, 17:09 »
Интересно
если сырцы tools/configure соответствуют бинарнику то понятно почему оно так происходит (поиск по сообщениям сразу наводит на возможные точки сбоя), только разбираться с этим нет ни желания, ни возможности. Да отлаживаться проще в X11 среде с похожим набором библиотек и qvfb.
Записан
Павел_F.
Гость
Re: Сборка под ARM.
«
Ответ #2 :
Март 25, 2010, 17:32 »
Никакой поиск меня никуда не привел. Задача стоит такая что нужно это наладить и для windows и для linux.
Ладно бы чего-то не хватало или не компилилось... Можно было разбираться. А тут даже не знаю куда податься. Опция должна быть а как бы нет...
«
Последнее редактирование: Март 25, 2010, 17:42 от Павел_F.
»
Записан
Rcus
Гость
Re: Сборка под ARM.
«
Ответ #3 :
Март 25, 2010, 17:47 »
Хм... вопроизведу свой поиск.
Цитировать
cd $QTDIR
ls tools
cd tools/configure
ls
/*хм... configureapp.cpp выглядит многообещающе*/
vim configureapp.cpp
/Unknown option
/*интересно - выглядит как окончание списка if .. else if .. */
/*попробуем промотать наверх... что-то там много, лучше поищем -embedded*/
/*так - с embedded понятно - аргумент не принимает*/
/*посмотрим что там с -xplatform...*/
/*интересно - как формируется mkspecs*/
/*ищем-ищем - оппа entryList по каталогу /mkspecs, а где второй уровень? А нету*/
/*Ну на нет и суда нет :q, ^D*/
Записан
Павел_F.
Гость
Re: Сборка под ARM.
«
Ответ #4 :
Март 26, 2010, 15:12 »
Ковыряясь в исходниках configure... Сделал так:
1) Перетащил папку linux-arm-g++ из QtDir/mkspecs/qws в QtDir/mkspecs
2) В файле qplatformdefs.h заменил ../../ на ../
3) В файле qmake.conf аналогично ../../ на ../ а также arm-linux на arm-none-linux-gnueabi
4) Запустил configure -arch arm -platform win32-g++ -xplatform linux-arm-g++ и еще кучка нужных мне аргументов
Теперь имеем. Configure таки прошел нормально... Уже легче.
Но на этапе выполнения make, если точнее пробовал и mingw32-make и cs-make от тулчейна, результат не меняеется, да и с чего бы он изменился. Говорит "test" не является внутренней или внешней командой, исполняемой программой или ...
Вопрос: а откуда бы ее взять эту test?. Под линукс пробегала тут, было дело... Под виндой не видел ни разу.
Записан
Павел_F.
Гость
Re: Сборка под ARM.
«
Ответ #5 :
Март 26, 2010, 16:53 »
Мысль возникла сказать этим Qt что их инструкция
Cross-Compiling Qt for Embedded Linux Applications
мягко говоря не работает... Да с английским тяжело у меня.
«
Последнее редактирование: Март 26, 2010, 16:56 от Павел_F.
»
Записан
Rcus
Гость
Re: Сборка под ARM.
«
Ответ #6 :
Март 26, 2010, 18:14 »
Не в инструкции все в порядке, обратите на направление разделителей в путях, наверное они не предполагали что кому-то захочется собирать Qt/QWS в чужой среде.
Записан
Павел_F.
Гость
Re: Сборка под ARM.
«
Ответ #7 :
Март 31, 2010, 09:21 »
Решил не делать новую тему а продолжить в этой.
Теперь пытаюсь тоже самое сделать в linux. И так тот же тулчейн но под linux. Так же правлю mkspec/qws/linux-arm-g++
Конфигуре запускаю так ./configure -embedded arm -xplatform qws/linux-arm-g++ -fast -no-phonon -no-webkit -no-phonon-backend -static
Оно успешно проходит, как оказалось виндовый и линуксовый конфигур отличаются как небо и земля даже по списку аргументов.
Теперь командуем make...
На нем ошибки
g++ -c -O2 -march=armv5te -mtune=arm926ej-s -s -fno-exceptions -O2 -fPIC -Wall -W -DQT_BOOTSTRAPPED -DQT_LITE_UNICODE -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_CODECS -DQT_NO_DATASTREAM -DQT_NO_GEOM_VARIANT -DQT_NO_LIBRARY -DQT_NO_QOBJECT -DQT_NO_STL -DQT_NO_SYSTEMLOCALE -DQT_NO_TEXTSTREAM -DQT_NO_THREAD -DQT_NO_UNICODETABLES -DQT_NO_USING_NAMESPACE -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../../mkspecs/qws/linux-x86-g++ -I. -I../../../include -I../../../include/QtCore -I../../../include/QtXml -I../../3rdparty/zlib -o .obj/release-static-emb-arm/qisciicodec.o ../../corelib/codecs/qisciicodec.cpp
../../corelib/codecs/qisciicodec.cpp:1: ошибка: некорректное значение (armv5te) для ключа -march
../../corelib/codecs/qisciicodec.cpp:1: ошибка: некорректное значение (arm926ej-s) для ключа -mtune=
С этим что делать? Гугл как-то не очень помогает...
Записан
Rcus
Гость
Re: Сборка под ARM.
«
Ответ #8 :
Март 31, 2010, 10:36 »
Хм... Я вообще собирал без ключа xplatform, ибо -embedded сам все ставит.
А не покаже $QTDIR/src/tools/bootstrap/Makefile? Qt пытается собрать кусок себя чтобы использовать в qmake/moc/..., но откуда-то выползают флаги для кросскомпилятора, что-то нездоровое в этом. Вы где их задали?
Записан
Павел_F.
Гость
Re: Сборка под ARM.
«
Ответ #9 :
Март 31, 2010, 11:12 »
Цитата: Rcus от Март 31, 2010, 10:36
А не покаже $QTDIR/src/tools/bootstrap/Makefile?
В какое место ему смотреть? Я, конечно, могу и выложить... но он такого лошадиного размера, длинный очень
Цитата: Rcus от Март 31, 2010, 10:36
Qt пытается собрать кусок себя чтобы использовать в qmake/moc/..., но откуда-то выползают флаги для кросскомпилятора, что-то нездоровое в этом. Вы где их задали?
Нигде, все что я делал я описал выше.
Сейчас попробую без xplatform.
Записан
Rcus
Гость
Re: Сборка под ARM.
«
Ответ #10 :
Март 31, 2010, 11:44 »
Цитата: Павел_F. от Март 31, 2010, 11:12
В какое место ему смотреть? Я, конечно, могу и выложить... но он такого лошадиного размера, длинный очень
Собственно меня интересует секция ####### Compiler, tools and options
, а именно - CXX, *FLAGS и DEFINES.
Цитата: Павел_F. от Март 31, 2010, 11:12
Нигде, все что я делал я описал выше.
Сейчас попробую без xplatform.
Ага, такие вещи как "-mtune=arm926ej-s" сами по себе появляются... необязательно было задавать через флаги ./configure или mkspecs, возможно это переменные среды.
Записан
Павел_F.
Гость
Re: Сборка под ARM.
«
Ответ #11 :
Март 31, 2010, 12:08 »
Цитата: QtDir/src/tools/bootstrap/Makefile
####### Compiler, tools and options
CC = arm-none-linux-gnueabi-gcc
CXX = g++
DEFINES = -DQT_BOOTSTRAPPED -DQT_LITE_UNICODE -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_CODECS -DQT_NO_DATASTREAM -DQT_NO_GEOM_VARIANT -DQT_NO_LIBRARY -DQT_NO_QOBJECT -DQT_NO_STL -DQT_NO_SYSTEMLOCALE -DQT_NO_TEXTSTREAM -DQT_NO_THREAD -DQT_NO_UNICODETABLES -DQT_NO_USING_NAMESPACE -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
CFLAGS = -O2 -march=armv5te -mtune=arm926ej-s -s -fno-exceptions -O2 -fPIC -Wall -W $(DEFINES)
CXXFLAGS = -O2 -march=armv5te -mtune=arm926ej-s -s -fno-exceptions -O2 -fPIC -Wall -W $(DEFINES)
INCPATH = -I../../../mkspecs/qws/linux-x86-g++ -I. -I../../../include -I../../../include/QtCore -I../../../include/QtXml -I../../3rdparty/zlib
AR = ar cqs
RANLIB =
QMAKE = /home/user/Qt/qt-src-4.6.2/bin/qmake
TAR = tar -cf
COMPRESS = gzip -9f
COPY = cp -f
SED = sed
COPY_FILE = $(COPY)
COPY_DIR = $(COPY) -r
STRIP = strip
INSTALL_FILE = install -m 644 -p
INSTALL_DIR = $(COPY_DIR)
INSTALL_PROGRAM = install -m 755 -p
DEL_FILE = rm -f
SYMLINK = ln -f -s
DEL_DIR = rmdir
MOVE = mv -f
CHK_DIR_EXISTS= test -d
MKDIR = mkdir -p
Вот он. И там они есть...
Возможно что-то добавилось когда сам тулчейн настраивали, это делал не я, я ковыряюсь с Qt. Я имею ввиду переменные среды.
В переменных среды, которые по env выводятся, есть строчка CFLAGS=-O2 -march=armv5te -mtune=arm926ej-s -s
В .bashrc у пользователя нашел строку source /home/user/cross.env
А уже в /home/user/cross.env есть строка export CFLAGS="-O2 -march=armv5te -mtune=arm926ej-s -s"
Но раз оно там, значит, наверное, оно было нужно.
Куда, что править?
«
Последнее редактирование: Март 31, 2010, 12:12 от Павел_F.
»
Записан
Rcus
Гость
Re: Сборка под ARM.
«
Ответ #12 :
Март 31, 2010, 12:19 »
Для Autoconf это бывает нужно, а в случае смешанной сборки - мешает.
Записан
Павел_F.
Гость
Re: Сборка под ARM.
«
Ответ #13 :
Март 31, 2010, 12:23 »
Если честно не понял... Но убрал эту строку с -march. make мне выдал:
Цитировать
g++ -Wl,-rpath-link,/home/user/Qt/qt-src-4.6.2/lib -fno-exceptions -Wl,-O1 -Wl,-rpath,/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib -Wl,-rpath,/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib -o ../../../bin/moc release-static/moc.o release-static/preprocessor.o release-static/generator.o release-static/parser.o release-static/token.o release-static/main.o -L/home/user/Qt/qt-src-4.6.2/src/tools/bootstrap -lbootstrap
/usr/bin/ld: /home/user/Qt/qt-src-4.6.2/src/tools/bootstrap/libbootstrap.a(compress.o): Relocations in generic ELF (EM: 40)
/home/user/Qt/qt-src-4.6.2/src/tools/bootstrap/libbootstrap.a: could not read symbols: File in wrong format
Это что еще за фокусы? Сколько не сижу с Qt никогда проблем не было, а эта сборка для арм и сам арм меня уже достал...
«
Последнее редактирование: Март 31, 2010, 12:39 от Павел_F.
»
Записан
Rcus
Гость
Re: Сборка под ARM.
«
Ответ #14 :
Март 31, 2010, 13:24 »
/*Вдыхает- выдыхает*/
А мне ARM нравится. Компоновщик вам английским языком говорит что compress.o не в том формате. Смотрим в src/tools/boostrap/bootstrap.pro - да это же compress.c из zlib. И собирается он компилятором указанным в CC, из-за замещения переменными среды *.c были собраны кросскомпилятором.
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...