Toolchain

...
  • .
    Last edited by Mario_r4 on Sun Jan 04, 2015 10:05 pm, edited 1 time in total.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Binutils для Колибри готовы. Ссылки в топике. LD скомпилирован и слинкован в Колибри.
  • Настраиваю по этой статье.
    http://habrahabr.ru/company/kolibrios/blog/229231/

    Выполняю в командной строке:

    Code: Select all

    cd d:/kolibri/contrib/sdk/sources/newlib/libc
    export PATH=$PATH:d:/Programming/mingw/msys/1.0/home/autobuild/tools/bin
    make shared
    make install
    
    Получаю ошибку:

    Code: Select all

    kos32-ld.exe: cannot find -lgcc
    make *** [libc.dll] Error 1
    
    Image

    Из-за чего может быть?
    Чудеса случаются! Это вам любой программист скажет! :)
  • оппа, интересно. я давно не пересобирал newlib. сегодня попробую вечером/ночью дома.
  • он ключ -lgcc вроде не находит.. А если его из Makefile убрать, то всё равно не работает
    Чудеса случаются! Это вам любой программист скажет! :)
  • Путь указан неправильно. Надо /home/autobuild/tools/win32/bin
  • Serge wrote:Путь указан неправильно. Надо /home/autobuild/tools/win32/bin
    В tools у меня нет папки win32/bin
    Чудеса случаются! Это вам любой программист скажет! :)
  • Простите за поздний ответ. Вот так всегда: пообещаешь что-то сделать вечером и исчезаешь на все выходные.

    Проверил по этой статье:
    http://habrahabr.ru/company/kolibrios/blog/229231/
    все скомпилировалось как и раньше, нареканий на исходники или работоспособность toolchain нет.

    Nikolai1, прошу еще раз обратить внимание на эти пункты:
    После установки MinGW перейти в папку c:\MinGW\msys\1.0 и создать в ней дерево папок home\autobuild\tools
    • Распаковать msys-kos32-x.x.x.7z в c:\MinGW\msys\1.0\home\autobuild\tools
    (если все сделано правильно, файл kos32-gcc.exe должен находиться по пути c:\MinGW\msys\1.0\home\autobuild\tools\win32\bin\kos32-gcc.exe)
    • Проверить работоспособность toolchain можно запустив c:\MinGW\msys\1.0\msys.bat
    в командной строке набрать
  • Простите за поздний ответ. Вот так всегда: пообещаешь что-то сделать вечером и исчезаешь на все выходные.
    Да ладно) бывает :wink:
    если все сделано правильно, файл kos32-gcc.exe должен находиться по пути c:\MinGW\msys\1.0\home\autobuild\tools\win32\bin\kos32-gcc.exe
    Ошибка у меня была именно в этом! Неправильно распаковал!

    Спасибо огромное!!! ошибка, как всегда, из-за моей невнимательности :wink:
    Чудеса случаются! Это вам любой программист скажет! :)
  • Так, пока появилось свободное время пробую снова компилировать код по статье...
    cd d:/work
    make

    Пишет, что "stdlib.h" No such file or directory. Пути все вроде верно прописаны. В чём может быть ошибка?
    Чудеса случаются! Это вам любой программист скажет! :)
  • Nikolai1,
    -открой файл Makefile
    -посмотри на переменную
    SDK_DIR:= /d/kolibri/contrib/sdk
    -убедись, что путь к содержимому contrib верный
    Актуальные компоненты libc находятся в svn репозитории KolibriOS, путь (root)/contrib/sdk/sources/newlib
    Также можно воспользоваться веб интерфейсом KolibriOS.org в разделе SVN и скачать соответствующий архив.
    Внимание, в в данной статье предполагается, что установка newlib произведена в d:\kolibri\contrib\sdk\sources\newlib
  • Появилось время, снова настраивал компилятор. Получилось скомпилировать несколько файлов на C++. Но теперь обнаружилась другая проблема:
    При динамическом выделении памяти C++ компилятор страшно ругается непонятными словами :(
    Если написать:

    Code: Select all

    int* a = new int;
    // или
    int* b = new int(10);
    
    то получаются вот такие ошибки:

    Code: Select all

    undefined reference to '__gthr_win32_mutex_destroy'
    undefined reference to '__gthr_win32_mutex_lock'
    
    Мой Makefile такой:
    Spoiler:

    Code: Select all

    EXEC = main
    
    LIB_SOURCE = lib/application.o lib/kos2win.o 
    FUNCTIONS_SOURCE = lib/functions/functions.o
    CLASSES_SOURCE = lib/classes/mstring.o
    CONTROLS_SOURCE = lib/controls/control.o lib/controls/button.o lib/controls/window.o
    
    SOURCE = $(CLASSES_SOURCE)
    
    CC = kos32-gcc
    LD = kos32-ld
    OBJCOPY = kos32-objcopy
    
    SDK_DIR:= /d/kolibri/contrib/sdk
    LDFLAGS = -static -S -nostdlib -T$(SDK_DIR)/sources/newlib/app.lds -Map $(EXEC).map --image-base 0
    CFLAGS = -c -O2 -fomit-frame-pointer -U__WIN32__ -U_Win32 -U_WIN32 -U__MINGW32__ -UWIN32
    
    INCLUDES= -I$(SDK_DIR)/sources/newlib/libc/include
    LIBPATH:= -L$(SDK_DIR)/lib -L/home/autobuild/tools/win32/mingw32/lib
    
    export PATH=$PATH:/home/autobuild/tools/win32/bin:/MinGW/bin
    
    default: $(EXEC)
    	
    clean:
    
    $(EXEC): $(SOURCE) $(EXEC).o makefile
    		#$(LD) $(LDFLAGS) $(LIBPATH) -o $(EXEC) *.o -lgcc -lapp -lc.dll
    		$(LD) $(LDFLAGS) $(LIBPATH) -o $(EXEC) *.o $(SOURCE) -lapp -lsupc++ -lgcc_eh -lc.dll -lgcc 
    		$(OBJCOPY) $(EXEC) -O binary
    
    %.o : %.cpp makefile
    		$(CC) $(CFLAGS) $(INCLUDES) -o $@ $<
    
    а запускаю его из bat файла

    Code: Select all

    D:\mingw\msys\1.0\bin\make.exe -s
    clean.bat
    pause
    
    clean.bat
    Spoiler:

    Code: Select all

    del *.o
    del *.map
    
    cd lib
    del *.o
    
    cd classes
    del *.o
    
    cd ..
    
    cd controls
    del *.o
    
    pause
    
    Чудеса случаются! Это вам любой программист скажет! :)
  • gthr_win32_mutex_destroy должна быть в libsupc++
    Есть информация откуда идёт undefined reference ?
  • Вот скриншот окна с ошибками.

    Serge wrote:gthr_win32_mutex_destroy должна быть в libsupc++
    Может быть скачать другую libsupc++?

    Надоели уже эти компиляторы... вечно с ними проблемы (или у меня криворукость повышенная)
    Attachments
    Скриншот окна
    cmd.png (20.73 KiB)
    Скриншот окна Viewed 11411 times
    Чудеса случаются! Это вам любой программист скажет! :)
  • Who is online

    Users browsing this forum: No registered users and 6 guests