Page 3 of 4
Re: Kolibri Foundation Classes (KFC)
Posted: Mon Jan 14, 2008 10:41 pm
by andrew_programmer
А где можно посмотреть libCk?
Здесь.
http://kolibrios.org/?p=SVN&kind=dir&lo ... trunk/libc
Я обственно говоря в printf не нуждаюсь, а вот все что в libc лежит в подпапке minuet нужно.
Папки minuet нет. Это библиотека для KolibriOS, а не m
enuetOS.
Re: Kolibri Foundation Classes (KFC)
Posted: Tue Jan 15, 2008 12:04 am
by Serge
Ghost
Code: Select all
; carpet bombing
mov eax, 70
mov ebx, kill
int 0x40
; still alive ?
; head shot...
mov eax, 9
mov ebx, 0x80003000
or ecx, -1
int 0x40
kill:
dd 0
dd 0
dd 0
dd 0x20000
dd 0x80001001
db '/RD/1/KERNEL.MNT',0
Re: Kolibri Foundation Classes (KFC)
Posted: Wed Jan 23, 2008 2:22 pm
by SHREDER
Собственно хочу положить бинарники lick для mingw. Я немного поправил инклуды для юзания оных из g++ т.е.
Code: Select all
#ifdef __cplusplus
extern "C" {
#endif
Так-же добавил decl.h
Собственно из предложение из серии "а давайте." Давайте закончим. Без этой либы фактически невозможно написать kfc, т.к. все ее идеология без использования stl и стандартной библиотеки С++ валится в пух и прах.
Если мы это сделаем то таким-же нехитрым способом можно будет портировать в kolibri весь gcc т.е. скопилировать его с опциями -I$(INCLUDE) -m32 -nostdinc -nostdlib где в INCLUDE будет естественно libck.
P.S. надо бы добавть new.h
P.P.S. Standard of C - C99
http://www.open-std.org/jtc1/sc22/wg14/ ... eV5.10.pdf
Re: Kolibri Foundation Classes (KFC)
Posted: Wed Jan 23, 2008 3:34 pm
by shamaz.mazum
Чё-то я не понял то про С, то про ++. Но поддерживаю
Re: Kolibri Foundation Classes (KFC)
Posted: Wed Jan 23, 2008 4:17 pm
by Serge
SHREDER
А чем ты её компилировал ? Там все объектники в ELF
Re: Kolibri Foundation Classes (KFC)
Posted: Wed Jan 23, 2008 5:03 pm
by shamaz.mazum
gcc.
MinGW?
Re: Kolibri Foundation Classes (KFC)
Posted: Tue Jan 29, 2008 4:45 pm
by SHREDER
Обьектники для MinGW
http://www.mingw.org. Это короче говоря gcc для винды асм конечно FASM-мом. Вроде работает.
Re: Kolibri Foundation Classes (KFC)
Posted: Tue Jan 29, 2008 9:58 pm
by Serge
SHREDER
У меня mingw gcc 4.2.1. Он всё компилирует в COFF, а ld линкует только в PE. Я пытался скомпилить в ELF, ничего не вышло. С какими опциями ты компилировал и какой версией ?
Re: Kolibri Foundation Classes (KFC)
Posted: Wed Jan 30, 2008 2:29 pm
by SHREDER
MinGW 5.1.3 (последний)
Вот собстно батник который это все и делает.
Однако лучше сбилдить с помощью make файла.
Для этого надо сделать нечто вроде
set PATH=%PATH%;C:\MinGW\bin @или пробить переменную окружения PATH вручную раз и навсегда (только там уже может быть ватком или борланд ибо инсталлеры пишут туда сами)
mingw32-make
или даже просто make
Все опции пробиты в майке
-I$(INCLUDE) -m32 -nostdinc -nostdlib -DGNUC
Короче без стандартных либ без стандартных инклудов и ELF.
Это можно сделать либо просто из командной строки или взять тулзу от mingw MSYS которая делает нечто аналогичное cygwin (только без posix).
Re: Kolibri Foundation Classes (KFC)
Posted: Wed Jan 30, 2008 3:26 pm
by Serge
SHREDER
Архив с ошибкой
Re: Kolibri Foundation Classes (KFC)
Posted: Wed Jan 30, 2008 5:58 pm
by SHREDER
Code: Select all
@echo off
echo ####################################################
echo # Melibc builder #
echo # usage: build [clean] #
echo ####################################################
rem #### CONFIG SECTION ####
set PATH=%PATH%;C:\MinGW\bin
set LIBNAME=libck.a
set INCLUDE=include
set CC=gcc
set CFLAGS=-c -nostdinc -DGNUC -I"%cd%\%INCLUDE%"
set AR=ar
set ASM=FASM.exe
set dirs=stdio memory kolibrisys string stdlib
rem #### END OF CONFIG SECTION ####
set objs=
set target=%1
if not "%1"=="clean" set target=all
set INCLUDE="%cd%"
call :Target_%target%
if ERRORLEVEL 0 goto Exit_OK
echo Probably at runing has been created error
echo For help send a report...
pause
goto :eof
:Compile_C
%CC% %CFLAGS% %1 -o "%~dpn1.o"
if not %errorlevel%==0 goto Error_Failed
set objs=%objs% "%~dpn1.o"
goto :eof
:Compile_Asm
%ASM% %1 "%~dpn1.o"
if not %errorlevel%==0 goto Error_Failed
set objs=%objs% "%~dpn1.o"
goto :eof
:Target_clean
echo cleaning ...
for %%a in (%dirs%) do del /Q "%%a\*.o"
goto :Exit_OK
:Target_all
echo building all ...
for %%a in (%dirs%) do (
for %%f in ("%%a\*.asm") do call :Compile_Asm "%%f"
for %%f in ("%%a\*.c") do call :Compile_C "%%f"
)
%AR% -ru %LIBNAME% %objs%
if not %errorlevel%==0 goto Error_Failed
goto Exit_OK
:Error_Failed
echo error: execution failed
pause
exit 1
:Exit_OK
echo ####################################################
echo # All operations has been done... #
echo # For cleaning run this script with param " clean" #
echo ####################################################
pause
exit 0
И скопируй FASM в папку с libc или пропиши его в патче.
Re: Kolibri Foundation Classes (KFC)
Posted: Wed Jan 30, 2008 6:49 pm
by Serge
SHREDER
У меня тоже 5.1.3, собственно это версия инсталлятора, runtime 3.13, make 3.81, binutils 2.17.50. Я компилирую файл gcc -c -nostdinc -DGNUC -o file.o file.c и получаю COFF. Версия gcc 4.2.1. Поэтому и спрашиваю как тебе удалось скомпилировать в ELF ? Какая у тебя версия gcc стоит, 4.2.1, 3.4.5 ?
Re: Kolibri Foundation Classes (KFC)
Posted: Thu Jan 31, 2008 5:09 pm
by SHREDER
Да забыл сори. С компилятор 3.4.5. make 3.81
То у меня уже комплекс сапорта расписываю по пунктам.
Re: Kolibri Foundation Classes (KFC)
Posted: Thu Jan 31, 2008 7:27 pm
by Serge
SHREDER
Спасибо, а то я думал что у меня уже глюки начались. Пару месяцев назад пытался скомпилировать ELF и ничего не вышло. В последних версиях gcc и binutils PE зашит намертво.
Re: Kolibri Foundation Classes (KFC)
Posted: Tue Feb 05, 2008 6:25 pm
by SHREDER
Собственно поскольку в KOS с текущей libc невозможно использовать STL в виду банального отсутсвия new.h и еще по ряду причин, я тут напедалил пару велосипедов. Все они используют только с либы и функции которые есть в libc.
Собстно тут три следеющих класса:
- AraayList - лист (ну или вектор) основанный на массиве. Эфективен по скорости доступа к елементу, но вставка и удаление елемента долгие, к тому-же требуют покрайней мере того-же количества свободной памяти что уже занята массивом для операции вставки или удаления. Однако класс хорош для небольших динамических массивов.
- LinkedList - лист на двусвязном списке. Доступ к элементу медленный (ибо я не использую алгоритмы бинарного поиска как в STL) но вставка и удалениие быстрые. Жрет памяти в целом больше чем ArrayList но для вставки и удаления памяти особо не нужно.
- Map содержит пары ключ-значение. Основанно на двусвязном списке. Вообще много приметивнее STL map ибо не проверяет целостность ключа. В качестве ключа надо подсовывать компарабельный тип (char* непойдет и класс в котором не определена операция ==).
Демки прилогаю (только под виндой запускайте там используется iostream).
З.Ы. О плохом, Map и LinkedList нельзя использовать вместе. Почему так происходит не знаю но при итерировании LinkedList до вызова дестуктора map в LinkedList итератор end указывает не неверный указатель т.е. например
если значение end = 0x00007c88 то получается значение 0x00007c880x00007c88.
Думаю что это это все убожество будет до тех пор в KFC пока не удастся портировать libc и libc++ полностью.