LinuxForum.Fans
Тема

Кросскомпиляция

Автор: PhilB 10 сообщений 2528 просмотров
#115927

Добрый день!

Хотел у вас спросить совета по поводу кросскомпиляции С/С++ приложений.
Сам использую linux, но в последнее время все чаще появляется необходимость компилировать win-приложения.
Меня интересует компиляция консольных и (в перспективе) gtk-приложений.
В интернете ничего толкового не нашел, все как-то очень запутанно и вдобавок еще и на английском языке.
Поставил MinGW из репозитариев, но как использовать не понял, документации нет.
В идеале хотелось бы, чтоб можно было использовать уже имеющийся linux`овый make-файл.

Подскажите, пожалуйста, что-нибудь из своего опыта или киньте ссылочки на что-нибудь толковое. Заранее спасибо.

#115990
PhilB написал:
Подскажите, пожалуйста, что-нибудь из своего опыта

Из своего опыта: пишу на Qt, если возникает необходимость собрать под винду пользуюсь виртуалкой, ибо кросскомпиляция конечно привлекательна, но может получится не рабочий код...

Пробовал ещё через wineg++ собрать хеллоу ворлд... но на этим мой опыт работы с ним и закончился. Можете погуглить в этом направлении тоже...
Вообще, если бы возникла такая необходимость, то я бы поставил какой-нить виндовый компиллер под wine...

#115992
PhilB написал:
Добрый день!

Хотел у вас спросить совета по поводу кросскомпиляции С/С++ приложений.
Сам использую linux, но в последнее время все чаще появляется необходимость компилировать win-приложения.
Меня интересует компиляция консольных и (в перспективе) gtk-приложений.
В интернете ничего толкового не нашел, все как-то очень запутанно и вдобавок еще и на английском языке.
Поставил MinGW из репозитариев, но как использовать не понял, документации нет.
В идеале хотелось бы, чтоб можно было использовать уже имеющийся linux`овый make-файл.

Подскажите, пожалуйста, что-нибудь из своего опыта или киньте ссылочки на что-нибудь толковое. Заранее спасибо.

Посмотрите на wxdevcpp.

#116194

По поводу wxdevcpp.
Я так понял, это среда для кроссплатформенной разработки + библиотеки для GUI и ускорения разработки. Это, конечно, интересно, но я уже как-то нацелился на gtk.
А меня интересует немного другое - как уже имеющийся код с gtk или просто консольный скомпилировать под win.

По поводу winegcc (я полагаю, он так называется)
В репозитаряих нет, беглый поиск в Интернете не дал результатов, где вы его нашли?:)

Немножко разобрался с MinGW, с консольными вроде пока работает, компилит.

#116213
PhilB написал:
В репозитаряих нет, беглый поиск в Интернете не дал результатов, где вы его нашли?:)

У меня из коробки с wine'ом 1.3.1 был у вас этот пакет, наверно, будет называться wine-dev или wine-devutils или ещё как-нить... не знаю, с дебианом ни разу не работал...

Хотя я всё равно не вижу смысла собирать под линем... Только ради интереса "а получится ли".
Пишите переносимый код, а соберёт тот кому надо будет... gtk всё равно подразумевает под собой GPL.

Added:
моя ошибка.. лицензия LGPL... но всё равно под винду проще собрать под виндой...

#116245
Fat-Zer написал:
Пишите переносимый код

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

Сегодня я в этом убедился.
Откомпилировал одну прогу. C elf все хорошо, а в exe выпала ошибка, о том что с памятью что-то не так...
И действительно, с memset накосячил.
Кросскомпияция - то же способ потестить smile

Fat-Zer написал:
будет называться wine-dev или wine-devutils или ещё как-нить...

Есть только libwine-dev, который описан как "This package provides the C header files." :(
Это явно не то.

Fat-Zer написал:
Пишите переносимый код, а соберёт тот кому надо будет...

Мне как правило и надо. smile
В добавок иногда требуется показать прогу на чужом компе (ноута нет), а там никаких компиляторов нет.
Хочу просто подобрать инструментарий, чтоб все было быстро и удобно.

Виртуалку не хочу
1. эти лишние нежелательные манипуляции
2. лицензии на винду, понятное дело, нет

#116434
PhilB написал:
Есть только libwine-dev, который описан как "This package provides the C header files."
Это явно не то.

одна строчка описания не раскроет суть дела... посмотрите список файлов пакета...

PhilB написал:
Мне как правило и надо.
В добавок иногда требуется показать прогу на чужом компе (ноута нет), а там никаких компиляторов нет.
Хочу просто подобрать инструментарий, чтоб все было быстро и удобно.

Студент? На первых парах кросскомпиляцией может и обойдётесь... а вот когда в глубь полезете поимеете наверняка геморрой на свою голову в виде:
1) зависимости от библиотек, которых нет с собой, в итоге перед тем, как куда-нить нести готовую прогу её придётся проверять в чистой винде
2) проблемы несовершенства АПИ вайна, то есть проблемы класса "под вайном работает, а под виндой нет" или наоборот, и тут уж точно придётся иметь дело

PhilB написал:
Виртуалку не хочу
1. эти лишние нежелательные манипуляции
2. лицензии на винду, понятное дело, нет

1. После настройки будет всё делаться буквально в 3 клика: запуск виртуалки, открытие проекта, компиляция/запуск
2. уважение к лицензиям это хорошо, но не надо быть таким правильным wink

PhilB написал:
Сегодня я в этом убедился.
Откомпилировал одну прогу. C elf все хорошо, а в exe выпала ошибка, о том что с памятью что-то не так...
И действительно, с memset накосячил.
Кросскомпияция - то же способ потестить

За границы массива небось вышли? тогда в elf тоже было не всё в порядке, просто вы этого не отловили и на -O1 вполне возможно прога бы уже не работала...

ладно в общем дело ваше, какой инструментарий выбирать, просто предупредил, что кросскомпиляция не панацея...

#117003

А вообще для проверки работоспособности под виндой по большому счёту можно использовать... Сам заинтересовался темой.
Сейчас пытаюсь научить qtcreator собирать через wine... если будут положительные результаты - отпишусь.

#117014
gramozeka написал:
а чем code::blocks не торт ?

там змейка есть и тетрис.... работать не возможно :D
а вообще я с Qt в основном работаю, а креатор - замечательная IDE-шка есть всё необходимое и ничего лишнего(разве что дебагер местами недопилен)... да и из коробки всё сразу работает, а в блоксах, когда пытался приручить, не осилил настройку переменных и бросил...

Войдите или зарегистрируйтесь, чтобы ответить.