Сборка gcc-4.0.1 под MinGW + MSys

Тема в разделе "WASM.UNIX", создана пользователем alpet, 5 авг 2005.

  1. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    Наверное несовсем по разделу, все-таки мне нужно научится собирать релизы в Win32, но все-же.

    Сделал довольно много попыток собрать сорцы новой версии компилятора, используя MinGW-gcc 3.4.2 для сборки и MSys 1.0 для запуска скриптов конфигурации, но каждый раз находились какие-то проблемы на различных этапах.



    Поэтапно, что я делал:

    MinGW был поставлен в каталог c:/MinGW, MSys в c:/MSys/1.0, сорцы gcc-4.0.1 в c:/MSys/1.0/src/gcc-4.0.1 (или /src/gcc-4.0.1, далее srcdir). Сначала запускал скрипты конфигурации в папках srcdir/gcc, srcdir/libiberty, srcdir/fixincludes, srcdir/intl и srcdir/libcpp.

    Параметры configure следующие:

    --with-gcc --with-gnu-ld --with-gnu-as --build=mingw32 --host=mingw32 --target=mingw32 \

    --prefix=/mingw --enable-threads --disable-nls \

    --enable-languages=c,c++ --disable-win32-registry --disable-shared \

    --with-gcc-version-trigger=/src/gcc-4.0.1/gcc/version.c



    Последним собственно конфигурируется srcdir/configure из каталога srcdir/build-mingw32, и запускается сборка через:

    make -f srcdir/build-mingw32/Makefile BOOT_CFLAGS="-O2 -fssa" bootstrap из каталога srcdir.



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



    Кто-нибудь может подсказать более надежный, простой и автономный способ сборки пакетов подобных gcc, или указать на допускаемые мной ошибки?
     
  2. aSL

    aSL New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    43
    Адрес:
    Russia
    Хмм... Веселая эта тема, если честно.

    Собрать можно. Правда, надо по дороге и руками аккуратно обходить issues msys и mingw. В основном первого. Реже - второго. Наиболее типичная проблема, из-за чего останаливается билд - gcc из mingw не переваривает пустого пути в -I. И сразу же падает. Еще куча приколов по дороге.... Но собрать можно. По крайней мере 3.4.3 я собирал.
     
  3. SDragon

    SDragon New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2005
    Сообщения:
    133
    Адрес:
    Siberia
    Скачай Dev-C++ с http://www.bloodshed.net. У них там все уже собрано и более или менее нормально работает. Зачем мучиться-то?
     
  4. aSL

    aSL New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    43
    Адрес:
    Russia


    Ну, скажем так, у них там ничего не собиралось. Они взяли готовый mingw и все. А человек хочет собрать gcc 4.0.1. Кстати, согласно официальному заявлению одного из разработчиков mingw32, они не будут собирать gcc 4.x, до тех пор, пока x не станет == 1.
     
  5. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    aSL

    Спасибо за наводку. Все-же дело это муторное, как я погляжу, хотя и проходимое. Надо к тому-же будет поправить файлы Makefile.in, в сторону правильного порядка аргументов (-f $(FILE) в первую очередь). И основная системо-зависимая проблема в конфигурировании:

    сначала путь, скажем /src/gcc-4.0.1/gcc преобразуется в C:\MSys\1.0\src\gcc-4.0.1\gcc, и при использовании превращается в C:\MSys1.0srcgcc-4.0.1gcc что в итоге и дает ошибку. Непонятно в общем зачем было получать абсолютный путь, да еще и формате Win9x (NT работает и с путями типа - /c/msys/1.0/bin если задавать их в PATH).



    SDragon

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

    aSL New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    43
    Адрес:
    Russia


    Естественно. Ибо одиночный '\' символ является префиксом для форматного ввода ;) Соответственно, в путях его крайне желательно экранировать. Только мне интересно, где ты такой путь нашел.... ;) Когда я собирял 3.4.x, то все было без подобных вещей... Общий принцип сборки - собирать из отдельного каталога. И все будет нормально. А вообще, RTFM ;) Могу еще порекоммендовать почитать про сборку cfrontend под mingw32 на http://llvm.cs.uiuc.edu/docs/CFEBuildInstrs.html (там общие инструкции, а про mingw - ищи в llvm-dev maillist).
     
  7. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    aSL

    Вот в том-то и проблема, что сам этот путь получается в недрах скрипта configure/Makefile, видать там используются какие-то API функции, после чего строка не приводится в нормальный вид (фигурирует как $$r в Makefile).

    Сборка в исключительно отдельной папке, у меня особенно не получается - приходится в любом случает выполнять отдельные конфигуры в соответсвующих подкаталогах (fixincludes, libiberty, etc), иначе сборка рвется с мессаждем типа "No rule for make target some..."

    За ссылку сенкс, почитаю как до нормальной сетkи дорвусь.