На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
Дорогие друзья! Поздравляем вас с днём Победы!
msm.ru
! Правила трёх "С"
Пожалуйста,
1. Соблюдайте правила Форума.
2. Слушайте советы Модераторов.
(например, http://forum.sources.ru/index.php?act=ST&f=7&t=80382 )
3. Сверяйтесь с учебником по Великому и Могучему
  
> Компиляция для wince из linux
    Недавно в одной из дискуссий возник вопрос о возможности компилировать программы под wince из-под линукса.
    Вот что у меня пока получилось.
    1. В debian 3.1r1 (sarge) на 13-м диске есть пакеты с именами pocketpc-{binutils,sdk,gcc,g++,gas}. В них содержится работающий компилятор. Заголовочных файлов там нет, так что можно компилировать приложения, не использующие win32 api.
    2. Из инсталлированного MS Pocket PC 2003 SDK можно взять каталог include. Комбинируем этот каталог с тем, что поставилось из пакета pocketpc-gcc (там есть несколько файлов с одинаковыми именами). Дорабатываем некоторые файлы (я сделал достаточно грубо: убрал #include <ole2.h> и #include <strsafe.h> из windows.h, в нескольких файлах сделал замену __int64 -> long long, поправил определение wchar_t (он должен бит 2-байтным), и еще несколько изменений.
    3. В результате полученных действий получилось скомпилировать простейшее приложение (с окнами). Только компилятор не хочет принимать WinMain, хочет main.
    Очевидно, что надо поправить некоторые вещи, но, в целом, toolchain работает.
    PS. При компиляции надо указать ключи -Wl,--major-subsystem-version=4,--minor-subsystem-version=20,--major-image-version=0
    Сообщение отредактировано: mo3r -
      Круто. Добавь в ФАК
        Цитата arcsupport @
        Круто. Добавь в ФАК

        Рано еше. Не все работает. Надо сделать скрипт, который готовит подключаемые файлы из mssdk.
          Парочка "отсебятин".
          1. У меня Слака, по этой причине я готовил toolchain "врукопашную". Делается просто -- нам нужен GCC, BINUTILS. Либо закачиваем их с сайта GCC, либо берём из дистра. GCC -- кросс-компилятор, по этой причине, это свойство и используем.

          Сразу оговорюсь -- по поводу имён. Конфликта имён не будет. Так что, можно не париться особо и просто делать AS IS. Только определитесь сразу -- под какие именно ARM'ы софт "строгать" будете?

          Итак, положим есть GCC. Разворачиваем его в папку (к примеру) /usr/src/gcc-ver. Версия не особо важна. Однако, по причине того, что я пользовался 2.95.3 (для PalmOS, делал так же toolchain) я ею и пользуюсь.

          Есть ряд моментов, которые нужно "держать в мозгах" при сборке toolchain (точнее, всё-таки, при конфигурации) -- поддерживаемый процессор (см. список на процы) и поддерживаемая архитектура результирующих файлов. Кроме того -- какие языки будем использовать (я пользуюсь С, С++, по этой причине и генерил для них).

          BINUTILS строятся аналогично. В результате, в /usr/bin/ появится набор софта для нашей версии. Причём, замечу, что такой весьма полезный утиль как objdump (по сути дела, дизассемблер) входит в набор binutils и настраивается на целевые архитектуры отдельно. При подготовке BINUTILS.

          2. По поводу заголовочных файлов. У меня 2005-я, по этой причине, выдрал файло оттуда. Править его не стал (уж больно, извините, гиморно -- врукопашную типы приводить... Просто, в проекте определяю через typedef то, что мне нужно. Вот так -> typedef unsigned long long uint64_t;
          Замечу, что можно пример как это делается, посмотреть вот здесь -> http://cvsweb.stop1984.com/index.cgi/entropy_rsa/configure.ac?rev=1.24&content-type=text/x-cvsweb-markup, правда, здесь... Несколько не заголовочный файл, а описание проекта, но почему бы и нет?

          Некоторые интересные замечания можно найти так же и здесь -> http://www-128.ibm.com/developerworks/eserver/library/es-MigratingWin32toLinux.html. Собственно, здесь о портировании Win32 под Linux, но, учитывая то, что компиль у нас один и тот же, некоторые вещи там подсмотреть можно.

          Собственно говоря, все вышеизложенные "заклинания" не столь и сложны (особенно, если учесть, что я готовил себе toolchain'ы для PalmOS -- и ARM и M68K), так что всё это не больно. Вот что более на данный момент интересно, так это два вопроса:
          - где нарыть сырцы редактора ресурсов?
          - где нарыть эмулятор? Блин, пожалуй, это самый острый вопрос. Дело в том, что для PalmOS, и эмулятор и симулятор нормально стартуют из-под WINE. Если вы желаете получить эмуляцию ARM, то оно вам и понадобится. Для M68K (положим, армлеты вам не интересны), под Linux есть эмуль (к нему нужен будет образ памяти, а выше 4.х PalmOS я не видел и доп. библиотека, с которой сей эмуль и написан -- FLTK), но по крайней мере, в любом из случаев эмулятор-то работает без таких тормозищ как M$'овский! Запустив это дерьмо под циндой, я чуть верёвку себе не намылил... :( Пускать это под WINE? Да ну, наф!

          Сижу, вот, репу себе ломаю... А зачем с такими траблами всё это запущать? :D:D:D Может, лучше забить на это как на класс, да и оставить себе работу с PalmOS?
          Сообщение отредактировано: the_Shadow -
            mo3r, the_Shadow, спасибо за информацию, пригодится.
              Небольшое дополнение: есть проект cegcc, в рамках которого разрабатывается кросс-компилятор для wince (binutils, gcc, newlib, gdb).
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0243 ]   [ 15 queries used ]   [ Generated: 12.05.24, 23:24 GMT ]