LG.BALUKATION's Weblog

Ничего, это тоже кое-что… А при желании из него можно сделать что угодно

Окошки…

Posted by LG.BALUKATION на 2008/07/05

Недавно мне было настолько нефиг делать, что я решил попинать новый вайн (wine 1.1.0).

Ну, точнее потыкать его несколько с необычной стороны — попробовать компилить в нём. Да, до этого я тока запускал мастдайный софт… Однако wine позиционируется не только как средство запуска, но и как инструмент отладки и портирования (о чём упоминали ребята из Ethersoft на Sun TechDays 2007).

В общем, некогда я юзал дома венду и кодил кой-чё, бывало даж с Win32 API. Часть этих сорсов до сих пор валяются в моей директории самопалов и вот я решил собрать что-нить из этого.

Как и следовало ожидать, вайн имеет некую взаимосвязь с GCC, нечто наподобии MinGW, но никаких сторонних средств я не ставил, пользуясь предоставляемыми «из коробки». А из коробки собст-но и доступны тока не интересный нам препроцессор, компили сей/цпп (о них и речь), а так же не рассмотренные тут средства для DLL и обеспечения отладки +)

Вайновый компиль создаёт (если сможет %) пару из самого «екзешника» и запускаемый скрипт, суть которого сводится к вызову «wine экзешник». Например, без обьявления имени выходного файла это будут a.out (скрипт) a.out.exe.so (исполняемый файл). Однако «экзешник» оказывается вовсе не вендовым, а почти родным ELF-файлом, хотя и сильно привязанным к вайну.

Теперь по-поводу «если сможет» — тут я заметил три основных проблемы:

Первый заключается в разности между компилторами. Не секрет, что большинство программ на C++ под венду пишутся с рассчётом на сборку в Micro$oft Vi$ual C++/$tudio, а не GCC. Тут есть свои тонкости, но т.к. я ещё в венде юзал MinGW, то у меня этой проблемы не было — мои проги изначально рассчитаны на использование GCC.

Второй момент плавно вытекает из первого — это разность в заголочных (header) файлах. Дело усугубляется тем, что wine’овские заголовки выглядят скудно даже на фоне MinGW. Например, моя программа по выводу свойств экрана не собиралась, т. к. в wine не было пары констант (для особо извратских свойств). Впрочем, это были достаточно специфичные и редкоюзаемые константы — основные вещи wine уже содержит в себе.

Третий момент связан с линковкой. Например, я так и не разобрался, как собрать в wine приложение WinAPI+OpenGL — после компиляции именно библиатеку последнего и не удаётся прикрутить :-? Но «чистые» WinAPI/GDI/GDI+ и м/б даже DirectX наверно работают номано, естественно в рамках реализованного в wine функционала.

Advertisements

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s