LINUX.ORG.RU

[кросс-компиляция] Собрать helloworld и helloworld.exe


0

1

Существует ли простой способ компилировать программу и под линукс, и под альтернативную ОС? Простой - это, например, когда после создания проекта в IDE есть две кнопки: «собрать для линукса» и «собрать для виндоус». Бывает такое?

★★
Ответ на: комментарий от madgnu

> mingw + два makefile'а

Я не хочу эти makefile'ы сам писать. И запускать в терминале mingw самостоятельно тоже не хочу.

fffgh ★★
() автор топика
Ответ на: комментарий от fffgh

ну заведи себе в том же нетбинзе два тулсета и две конфигурации на каждый тулсет…

arsi ★★★★★
()

+me как-то примерно так писал Makefile для своей небольшой программки

all:
   gcc -o heat heat.c matrix.c initial.c solver.c plotter.c args.c solution.c -lm
w32:
   i486-mingw32-gcc -o heat.exe heat.c matrix.c initial.c solver.c plotter.c args.c solution.c -lm

zhuravlik ★★★★
()
Ответ на: комментарий от zhuravlik

Спасибо. В крайнем случае так сделаю.

Но хотелось бы, чтоб само работало.

fffgh ★★
() автор топика

Существует ли простой способ компилировать программу и под линукс, и под альтернативную ОС? Простой - это, например, когда после создания проекта в IDE есть две кнопки: «собрать для линукса» и «собрать для виндоус». Бывает такое?

Qt + QtCreator = кнопка одна

shty ★★★★★
()
Ответ на: комментарий от fffgh

> Смотрите в сторону QtCreator.

А где там?

там «из коробки» встроено, компилируете из под Linux - получаете helloworld, из под Windows - helloworld.exe

shty ★★★★★
()
Ответ на: комментарий от shty

>там «из коробки» встроено, компилируете из под Linux - получаете helloworld, из под Windows - helloworld.exe

Дык, так в любой IDE можно. Компилируешь под виндовс - и получаешь экзешник. Мне надо экзешник в линуксе получить, зачем лишняя ОС?

Речь не о поиске кроссплатформенной библиотеки - пока и stdio хватает. Helloworld же.

fffgh ★★
() автор топика
Ответ на: комментарий от fffgh

Речь не о поиске кроссплатформенной библиотеки - пока и stdio хватает. Helloworld же.

1. Вам надо учиться читать внимательно и самостоятельно анализировать факты, QtCreator - это не библиотека

2. пока хватает, а потом?

shty ★★★★★
()

для helloworld будет не сложно
для QtCreator будет примерно так:

  • в .pro файле проекта добавляешь
    QT       -= core gui
    CONFIG   -= qt thread
  • вкладка проекты, настройка сборки - добавляешь новую цель win, в этапах сборки удаляешь шаг qmake и заменяешь своим
    Команда: qmake-qt4
    Рабочий каталог: $BUILDDIR
    Опции запуска: /путь/до/HelloWorld.pro -r -spec unsupported/win32-g++-cross
    
  • собираешь проект
seed_stil ★★
()
Ответ на: комментарий от shty

>Дык, так в любой IDE можно. Компилируешь под виндовс - и получаешь экзешник. Мне надо экзешник в линуксе получить, зачем лишняя ОС?

в любой IDE

fffgh (13.02.2011 0:00:08)



QtCreator - это не библиотека

shty ** (13.02.2011 0:05:27)



да, учиться внимательно читать надо определенно fffgh

seed_stil ★★
()
Ответ на: комментарий от seed_stil

Что-то не собирает:

Starting: /usr/bin/qmake-qt4 ********.pro -r CONFIG+=debug -spec unsupported/win32-g++-cross
Could not find mkspecs for your QMAKESPEC(unsupported/win32-g++-cross) after trying:
/usr/share/qt4/mkspecs
Error processing project file: ********.pro
Exited with code 3.
Error while building project reverse
When executing build step 'QMake'

mingw вроде есть:

$ aptitude search mingw32
i gcc-mingw32 - The GNU Compiler Collection (cross compiler for MingW32)
p mingw32 - Minimalist GNU win32 (cross) compiler
i A mingw32-binutils - Minimalist GNU win32 (cross) binutils
i A mingw32-runtime - Minimalist GNU win32 (cross) runtime

Убрал «unsupported/» - результат тот же.

fffgh ★★
() автор топика
Ответ на: комментарий от seed_stil

а Вы за других не отвечайте - отвечайте за себя, Вам же надо учиться правильно цитировать и отслеживать нить дискуссии, или хотя бы не влезать в разговор, смысла которого не понимаете

shty ★★★★★
()
Ответ на: комментарий от fffgh

посмотри в этой директории /usr/share/qt4/mkspecs
в принципе можно и win32-g++ изменить (нафиг он в линуксе), но это будет совсем костыльный слакварь вей

Выполняется сборка проекта HelloWorld...
Запускается "/usr/bin/qmake-qt4" /home/stil/soft/HelloWorld/HelloWorld.pro -r -spec unsupported/win32-g++-cross
Процесс "/usr/bin/qmake-qt4" завершился нормально.
Запускается "/usr/bin/make" -w
make: Вход в каталог `/home/stil/soft/build'
/usr/bin/make -f Makefile.Release
make[1]: Вход в каталог `/home/stil/soft/build'
i586-mingw32msvc-g++ -c -pipe -O2 -fexceptions -mthreads -Wall -fno-rtti -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DYNAMIC_CAST -I'../HelloWorld' -I'.' -I'/usr/share/qt4/mkspecs/unsupported/win32-g++-cross' -o release/main.o ../HelloWorld/main.cpp
i586-mingw32msvc-g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -mthreads -Wl -Wl,-subsystem,windows -o release/HelloWorld.exe release/main.o  
make[1]: Выход из каталога `/home/stil/soft/build'
make: Выход из каталога `/home/stil/soft/build'
Процесс "/usr/bin/make" завершился нормально.

seed_stil ★★
()
Ответ на: комментарий от seed_stil

> посмотри в этой директории /usr/share/qt4/mkspecs

Там нет, ни в самом каталоге, ни в unsupported. Только win32-g++.

Ubuntu 10.04. А у тебя какой дистрибутив?

fffgh ★★
() автор топика
Ответ на: комментарий от seed_stil

> 10.10, но это не важно.

Похоже, важно.

Эти файлы лежат в пакете qt4-qmake.

В 10.04 в этом пакете нет «win32-g++-cross», в 10.10 - есть.

В итоге собрал, но после ковыряния. Интересно, почему у тебя работает сразу? Оно ведь не должно:

В 10.10 в файле /usr/share/qt4/mkspecs/unsupported/win32-g++-cross/qmake.conf упоминаются неведомые «i686-pc-mingw32-gcc» и прочие «i686-pc-mingw32-*». У тебя же в выводе - нормальный «i586-mingw32msvc-g++».

Как так, сам поменял?

fffgh ★★
() автор топика
Ответ на: комментарий от fffgh

не помню) либо поменял в спеке, либо симлинк в /usr/local/bin сделал

seed_stil ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.