Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Сб окт 21, 2017 12:41 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 18 сообщений ]  На страницу 1 2 След.
Автор Сообщение
 Заголовок сообщения: Вопрос о C
СообщениеДобавлено: Пт июн 25, 2010 1:30 pm 
Не в сети

Зарегистрирован: Пт июн 25, 2010 1:16 pm
Сообщения: 2
Здравствуйте. Я тут новичок, решил посмотреть в каком состоянии ваша ОС. Впечатления в целом положительные. Интересно, можно ли туда перенести программы на C?

viewtopic.php?f=9&t=480
http://diamond.kolibrios.org/

Смотрел по ссылкам выше. То, что там предлагают использовать (menuetlibc) содержит неправильный Makefile (я пробовал BSD make и GNU make - результат 1 - Line 4: missing dependency operator). Собрать не получается. Есть ли пофиксенная версия?

И ещё, если я сам пофиксю, и скомпилирую какую-нибудь прогу с помощью gcc и этой библиотеки, то как сделать его исполняемым в KolibriOS? В плане, понимает ли она ELF формат?


Вернуться к началу
 Заголовок сообщения: Re: Вопрос о C
СообщениеДобавлено: Пт июн 25, 2010 1:52 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
Всё там собирается GNU-тым make. Если дефолтный make - BSDшный, позаботьтесь о замене команды make на путь к правильному бинарнику везде. Переменная окружения MENUETDEV установлена?
Колибри не понимает ELF-формат, одной из целей системы сборки в menuetlibc является сборка бинарников в нужном формате.


Вернуться к началу
 Заголовок сообщения: Re: Вопрос о C
СообщениеДобавлено: Пт июн 25, 2010 2:10 pm 
Не в сети

Зарегистрирован: Пт июн 25, 2010 1:16 pm
Сообщения: 2
diamond писал(а):
Переменная окружения MENUETDEV установлена?

да
diamond писал(а):
Всё там собирается GNU-тым make. Если дефолтный make - BSDшный, позаботьтесь о замене команды make на путь к правильному бинарнику везде.

Достаточно использовать gmake

diamond писал(а):
Колибри не понимает ELF-формат, одной из целей системы сборки в menuetlibc является сборка бинарников в нужном формате.

Ясно, спасибо.

diamond писал(а):
Всё там собирается GNU-тым make.

Таки нет) Ну ладно, я вручную соберу)


Вернуться к началу
 Заголовок сообщения: Re: Вопрос о C
СообщениеДобавлено: Пт июн 25, 2010 2:40 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
Цитата:
Достаточно использовать gmake

Вы Makefile глазами смотрели? Что он внутри себя make (а вовсе не gmake) вызывает для вложенных папок, видели?


Вернуться к началу
 Заголовок сообщения: Re: Вопрос о C
СообщениеДобавлено: Сб сен 28, 2013 10:37 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1076
Какую библиотеку лучше использовать? Menuetlibc или newlib?

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: Вопрос о C
СообщениеДобавлено: Сб сен 28, 2013 11:29 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
punk_joker
В новой newlib нативная поддержка PE DLL с автоматической линковкой.
Но привязка жесткая к mingw32.


Вернуться к началу
 Заголовок сообщения: Re: Вопрос о C
СообщениеДобавлено: Пт фев 27, 2015 6:36 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4219
Описание к сисфункции:
Код:
Структура блока данных входа каталога (БДВК):
  * +0: dword: атрибуты файла:
    * бит 0 (маска 1): файл только для чтения
    * бит 1 (маска 2): файл является скрытым
    * бит 2 (маска 4): файл является системным
    * бит 3 (маска 8): это не файл, а метка тома
      (на заданном разделе встречается не более одного раза и
      только в корневой папке)
    * бит 4 (маска 0x10): это папка
    * бит 5 (маска 0x20): файл не архивировался - многие программы
      архивации имеют опцию, по которой архивируются только файлы
      с установленным этим битом, после чего этот бит сбрасывается -
      это может быть полезно для автоматического создания
      backup-архивов, ибо при записи бит обычно устанавливается
      (не в Kolibri, правда)


раньше я использовал dword и проверял его биты, сейчас я решил разложить его на биты в самой структре;
Код:
dword readonly:1, hidden:1, system:1, volume_label:1, isfolder:1, notarchived:1;

Почему-то не работает, что я делаю не так?

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: Вопрос о C
СообщениеДобавлено: Пт фев 27, 2015 7:59 pm 
Не в сети

Зарегистрирован: Вс окт 02, 2011 4:48 pm
Сообщения: 43
Leency писал(а):
Код:
dword readonly:1, hidden:1, system:1, volume_label:1, isfolder:1, notarchived:1;

Почему-то не работает, что я делаю не так?


Может в этом дело:
Цитата:
"Битовые поля имеют тип unsigned int, так как имеют длину один бит. Если длина поля больше одного бита, то поле может иметь и знаковый целый тип.

http://learnc.info/c/unions_and_bitfields.html"


Вернуться к началу
 Заголовок сообщения: Re: Вопрос о C
СообщениеДобавлено: Пт фев 27, 2015 8:27 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4219
Не, я перечитал документацию к С-- и нашёл проблему!!! Спасибо Диме за наводку!
Дело в выравнивании http://c--sphinx.narod.ru/c--doc.htm#8.1.8
Правильно так:
Код:
dword   readonly:1, hidden:1, system:1, volume_label:1, isfolder:1, notarchived:1, :0;

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: Вопрос о C
СообщениеДобавлено: Вт мар 03, 2015 2:13 am 
Не в сети
Аватара пользователя

Зарегистрирован: Сб июл 05, 2014 11:15 am
Сообщения: 87
чисто мое имхо, но я бы не использовал битовые поля в этой ситуации.
не сказал бы что я крутой спец, но толку тут я особо не вижу:
- более чем уверен что в памяти оно все-равно будет храниться как dword
- если не будет храниться как dword, процессор потратит больше времени на переваривание битового поля, если оно не кратно размеру слова + выравнивание
- переносимость в платформах битовых полей всегда хуже
- [х] да и не нравится оно мне, как-то оно не по сишному выглядит


Вернуться к началу
 Заголовок сообщения: Re: Вопрос о C
СообщениеДобавлено: Ср апр 29, 2015 9:52 am 
Не в сети
Аватара пользователя

Зарегистрирован: Вт апр 28, 2015 11:01 pm
Сообщения: 11
Я правильно понял, относительные пути к файлам в newlib не поддерживаются? Есть какой-нить костыль для обхода?
Ну, или, есть ли какой-нибудь способ узнать путь к программе, которая запущена? getwd не работает. Пишет undefined reference to getwd.

menuet-libc умеет то, что я хочу?

Заранее спасибо.


Вернуться к началу
 Заголовок сообщения: Re: Вопрос о C
СообщениеДобавлено: Ср апр 29, 2015 11:21 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Относительные пути поддерживаются. Проблема в том, что не все файловые менеджеры меняют текущий каталог при перемещении по дереву каталогов. Shell меняет.
Каталог из которого запущена программа определяется традиционно через argv[0]
Текущий рабочий каталог
Код:
char *getcwd(char *buf, size_t size)
{
    int bsize;
    __asm__ __volatile__(
    "int $0x40"
    :"=a"(bsize)
    :"a"(30),"b"(2),"c"(buf), "d"(size)
    :"memory");

    return buf;
};


Вернуться к началу
 Заголовок сообщения: Re: Вопрос о C
СообщениеДобавлено: Чт сен 03, 2015 8:39 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1076
Что лучше использовать для портирования новых программ на С? Menuetlibc или Newlib? И можно ли обойтись вообще без них? Хотелось бы просто собрать avra под Колибри, но требование обязательного наличия newlib как то смущает.

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: Вопрос о C
СообщениеДобавлено: Чт сен 03, 2015 8:53 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Что такое avra ?


Вернуться к началу
 Заголовок сообщения: Re: Вопрос о C
СообщениеДобавлено: Чт сен 03, 2015 9:03 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт янв 27, 2006 3:06 pm
Сообщения: 1069
http://avra.sourceforge.net/README.html я полагаю


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 18 сообщений ]  На страницу 1 2 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB