лили ли лиnux? (gnu/linux again v2)

Любые разговоры которые хоть как-то связаны с тематикой форума

Модератор: Модераторы разделов

watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: лили ли лиnux?

Сообщение watashiwa_daredeska »

sash-kan писал(а):
01.08.2012 14:23
1. ты утверждаешь, что выложенный тобой бинарник размером 1269283 байта удовлетворяет требованию:
sash-kan писал(а):
01.08.2012 12:19
чтобы он напрямую обращался к linux-у и не использовал ни байта кода из какой угодно реализации libc
верно?
Да.

sash-kan писал(а):
01.08.2012 14:23
как же тут разобраться-то, а?
Либо технические средства, либо поверить на слово. Например, разработчикам компилятора: http://golang.org/doc/go_faq.html#How_is_t...ort_implemented

sash-kan писал(а):
01.08.2012 14:23
а вот насчёт go…
А как насчет ASM'а?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: лили ли лиnux?

Сообщение sash-kan »

Bizdelnick писал(а):
01.08.2012 13:51
Если ты называешь GNU без ядра операционной системой
unix-like операционная система — это (как минимум) какое-нибудь ядро и какая-нибудь libc·
если я утверждал обратное, значит, был не прав·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: лили ли лиnux?

Сообщение Bizdelnick »

sash-kan писал(а):
01.08.2012 14:33
unix-like операционная система — это (как минимум) какое-нибудь ядро и какая-нибудь libc·
если я утверждал обратное, значит, был не прав·

Ну как - утверждал...
sash-kan писал(а):
01.08.2012 14:33
ОС: GNU

Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: лили ли лиnux?

Сообщение sash-kan »

watashiwa_daredeska писал(а):
01.08.2012 14:32
sash-kan писал(а):
01.08.2012 14:23
1. ты утверждаешь, что выложенный тобой бинарник размером 1269283 байта удовлетворяет требованию:
sash-kan писал(а):
01.08.2012 12:19
чтобы он напрямую обращался к linux-у и не использовал ни байта кода из какой угодно реализации libc
верно?
Да.

sash-kan писал(а):
01.08.2012 14:23
как же тут разобраться-то, а?
Либо технические средства, либо поверить на слово. Например, разработчикам компилятора: http://golang.org/doc/go_faq.html#How_is_t...ort_implemented
я, кстати, к этому абзацу тебя и подводил·
цитирую:
QUOTE писал(а):Gccgo's run-time support uses glibc. Gc uses a custom library

ты сейчас скажешь, что эта custom library — это совсем не libc (а просто yet another libc implementation)·
и я даже не буду требовать этому доказательств·
а просто спрошу: в чём её _фактическое_ функциональное отличие от множества других реализаций libc?

Bizdelnick писал(а):
01.08.2012 14:39
sash-kan писал(а):
01.08.2012 14:33
unix-like операционная система — это (как минимум) какое-нибудь ядро и какая-нибудь libc·
если я утверждал обратное, значит, был не прав·

Ну как - утверждал...
sash-kan писал(а):
01.08.2012 14:33
ОС: GNU

я не перечислил все ядра, способные работать в связке с glibc?
ай-яй-яй, какой я нехороший·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
yamah
Сообщения: 1116
ОС: Rosa Fresh, Debian, RELS
Контактная информация:

Re: лили ли лиnux?

Сообщение yamah »

Все равно не логично.
1. / - символ деления. Получаем GNU деленное на Linux. - Это как? :)
2. / - символ обозначения каталога. Тогда не ясно где же корень всей этой связки. :)
Было бы логичнее GNU Under Linux
GNULinux.png
Понимание - это меч с тремя кромками: ваша правда, наша правда и Истина.
Жизнь - игра: сюжет задуман фигова, но графика хорошая...
Лучший игровой сервер - Земля: карта всего одна, но на 7 миллиардов игроков; читеров нет, админ терпеливый, но если уж забанит...
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: лили ли лиnux?

Сообщение Bizdelnick »

sash-kan писал(а):
01.08.2012 14:41
я не перечислил все ядра, способные работать в связке с glibc?
ай-яй-яй, какой я нехороший·

Ты написал, что используешь некую ОС GNU. В принципе так, наверное, можно назвать GNU/Hurd, но за использованием её я тебя не замечал.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: лили ли лиnux?

Сообщение sash-kan »

yamah
ваши соображения следует направить куда-то в этом направлении: https://lists.gnu.org/mailman/listinfo/gnu-misc-discuss
только перед написанием письма внимательно прочитайте секцию about·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: лили ли лиnux?

Сообщение Bizdelnick »

Кстати, GNU∪Linux действительно было бы логичнее. Только набирать труднее.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: лили ли лиnux?

Сообщение sash-kan »

Bizdelnick писал(а):
01.08.2012 15:27
Ты написал, что используешь некую ОС GNU
эээ, Дима, я ведь тоже буквоед·
вот скриншот профиля:Изображение
подскажи, пожалуйста, где на нём написано слово «используешь»?

я лишь написал название операционной системы·
если бы я хотел написать конкретно про связку gnu и linux, я бы так и сделал·

p.s. представь, что там написано »gnu/*»

Bizdelnick
а почему «under»?
мне казалась более общепринятой картина внутри-компьютерного мира в виде: железо внизу, программы вверху·
так чаще на картинках рисуют·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: лили ли лиnux?

Сообщение Bizdelnick »

sash-kan писал(а):
01.08.2012 15:49
я лишь написал название операционной системы·

Хочешь сказать, ты подразумевал GNU/Hurd?

sash-kan писал(а):
01.08.2012 15:49
представь, что там написано »gnu/*»

GNU/Hurd и GNU/* - это разные вещи.

sash-kan писал(а):
01.08.2012 15:49
а почему «under»?

Да, почему "under"? Я про "under" ничего не писал.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: лили ли лиnux?

Сообщение watashiwa_daredeska »

sash-kan писал(а):
01.08.2012 14:41
ты сейчас скажешь, что эта custom library — это совсем не libc (а просто yet another libc implementation)·
Это не yet another libc implementation, это совсем другая библиотека.

sash-kan писал(а):
01.08.2012 14:41
в чём её _фактическое_ функциональное отличие
Тут надо бы понять, что означает «функциональное отличие». Так, навскидку, могу предложить несколько пунктов:
1. Другой API. У библиотеки Go API на языке Go, со всеми его типами и пр.
2. Ориентированность на другую среду. Библиотека Go ориентирована на работу с Go au naturel, со всеми его заморочками в виде goroutines, GC и пр.
3. Другой состав. В состав библиотеки Go входит множество вещей, которых нет в libc, начиная от обработки изображений и криптографии, заканчивая веб-сервером. Некоторых элементов стандартной libc нет в Go. Например, в данный момент в Go есть технические препятствия для реализации fork() в POSIX'овом стиле, поэтому его в Go нет.

В целом, как-то даже странно сравнивать библиотеки разных языков, ведь стандартная библиотека Go не является даже binding'ом libc.

sash-kan писал(а):
01.08.2012 14:31
речь я веду (если не оговорено иное) о posix-like операционных системах и gnu/linux в частности

если … попытки увести разговор в сторону будут продолжаться
Вообще-то, POSIX-like — это уже немного другая тема. Вот конкретно сейчас, мы выясняем, что есть ОС вообще. Если рассматривать вопрос в рамках ограничения «POSIX-like», то разговор вообще не имеет смысла, ибо тогда получается, что «ОС — это минимальный набор ПО, удовлетворяющий POSIX». Но если мы таки договоримся, что:

1. Linux (как ядро) сам по себе удовлетворяет минимальному определению ОС,

то дальше:

2. POSIX — набор различных требований, включая различные API;
3. GNU — одна из реализаций POSIX, в том числе и на основе Linux;
4. В современных дистрибутивах присутствуют различные реализации множества разных спецификаций и API (freedesktop.org, OpenGL и пр.);
5. Почему ты считаешь, что в названии такого совокупного комплекта реализаций различных API и утилит нужно (порядочно, честно или как там еще) указывать производителя реализации лишь одного из многих таких API?
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2042
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: лили ли лиnux?

Сообщение Stauffenberg »

sash-kan писал(а):
31.07.2012 22:01
увы, произвольный бинарник не умеет делать системные вызовы·

Почему же не умеет? А как же номера системных вызовов, которые мы передаем перед 0x80 прерыванием?
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
yamah
Сообщения: 1116
ОС: Rosa Fresh, Debian, RELS
Контактная информация:

Re: лили ли лиnux?

Сообщение yamah »

sash-kan писал(а):
01.08.2012 15:49
а почему «under»?

В угоду GNU.org, которые открыто заявляют, что они первичнее. ядра. :)
Упоминать главную составляющую первой — это правильно и корректно.

Возможно, "over" куда логичнее, но символ объединения множеств (именно он на моей картинке) легче понять как букву "U".
Отсюда:
Но они — остов системы; система была создана их объединением.
Понимание - это меч с тремя кромками: ваша правда, наша правда и Истина.
Жизнь - игра: сюжет задуман фигова, но графика хорошая...
Лучший игровой сервер - Земля: карта всего одна, но на 7 миллиардов игроков; читеров нет, админ терпеливый, но если уж забанит...
Спасибо сказали:
Аватара пользователя
yamah
Сообщения: 1116
ОС: Rosa Fresh, Debian, RELS
Контактная информация:

Re: лили ли лиnux?

Сообщение yamah »

Хм. А если организовать раздел на форуме Google/Linux и сманить с 4pda специолистов по этому дистрибутиву? :-D
(Сарказм такой, если что.)
Понимание - это меч с тремя кромками: ваша правда, наша правда и Истина.
Жизнь - игра: сюжет задуман фигова, но графика хорошая...
Лучший игровой сервер - Земля: карта всего одна, но на 7 миллиардов игроков; читеров нет, админ терпеливый, но если уж забанит...
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: лили ли лиnux?

Сообщение sash-kan »

Bizdelnick писал(а):
01.08.2012 16:11
Хочешь сказать, ты подразумевал GNU/Hurd?
нет, я подразумеваю то, о чём написал·

Bizdelnick писал(а):
01.08.2012 16:11
GNU/Hurd и GNU/* - это разные вещи.
правильно·

Bizdelnick писал(а):
01.08.2012 16:11
Да, почему "under"? Я про "under" ничего не писал.
yamah написал (точнее нарисовал)·
я вижу, что ты написал то, что у него на рисунке·
если вы действовали абсолютно независимо — ноу проблем·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: лили ли лиnux?

Сообщение sash-kan »

watashiwa_darede... писал(а):
01.08.2012 16:57
Тут надо бы понять, что означает «функциональное отличие».
что делает любая libc в unix-like операционной системе? она предоставляет api, в ней реализован набор функций (ввода/вывода, работы со строками и т.д. и т.п.), и она _напрямую_, без доп.посредников, обращается при необходимости к ядру·
та custom library, которая используется gc, делает не то же самое?

watashiwa_darede... писал(а):
01.08.2012 16:57
Вообще-то, POSIX-like
это я оговорился в запарке·
конечно, unix-like·
posix — это ж не операционная система, а стандарт·

watashiwa_darede... писал(а):
01.08.2012 16:57
Linux (как ядро) сам по себе удовлетворяет минимальному определению ОС,
предлагаю не растекаться мыслью по древу: напоминаю, что по поводу названия linux-а нет и не может быть никаких разногласий·
а вот по поводу того, на какой операционной системе основаны все популярные современные дистрибутивы (в частности, в семействах debian, suse, redhat, mandriva, slackware, gentoo, ubuntu), разногласия имеются·

watashiwa_darede... писал(а):
01.08.2012 16:57
ведь стандартная библиотека Go
ты вот указал выше в параметрах компиляции "--compiler=gc"·
а по умолчанию применяется gccgo?

watashiwa_darede... писал(а):
01.08.2012 16:57
Почему ты считаешь, что в названии такого совокупного комплекта реализаций различных API и утилит нужно (порядочно, честно или как там еще) указывать производителя реализации лишь одного из многих таких API?
наверно потому, что си-api — это стандарт в unix-like операционках вообще и перечисленных уже неоднократно дистрибутивах в частности?

watashiwa_darede... писал(а):
01.08.2012 16:57
В современных дистрибутивах присутствуют различные реализации множества разных спецификаций и API (freedesktop.org, OpenGL и пр.)
эти реализации api обращаются к linux-у напрямую или через libc? конкретные реализации в конкретных дистрибутивах·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: лили ли лиnux?

Сообщение Bizdelnick »

sash-kan писал(а):
01.08.2012 20:11
нет, я подразумеваю то, о чём написал·

Тогда и следует писать GNU/*, а не GNU.

sash-kan писал(а):
01.08.2012 20:11
yamah написал (точнее нарисовал)·
я вижу, что ты написал то, что у него на рисунке·
если вы действовали абсолютно независимо — ноу проблем·

Не абсолютно, просто я не вкладывал в знак объединения дополнительных смыслов.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: лили ли лиnux?

Сообщение sash-kan »

Stauffenberg писал(а):
01.08.2012 17:28
sash-kan писал(а):
31.07.2012 22:01
увы, произвольный бинарник не умеет делать системные вызовы·

Почему же не умеет? А как же номера системных вызовов, которые мы передаем перед 0x80 прерыванием?
вот так просто? вызов прерывания, занимающий десяток байт?
а что же тогда в этом бинарнике занимает пол-мегабайта? неужели несколько тысяч раз вызывается одно и то же прерывание?

Код: Выделить всё

$ cat helloworld.c
#include<unistd.h>
main()
{
  write(1,"dest\n",5);
}

$ make SHARED=0 CC='gcc -static' helloworld &>/dev/null
$ ls -l
total 572
-rwxr-xr-x 1 al al 574469 Aug  1 20:52 helloworld
-rw-r--r-- 1 al al     54 Aug  1 20:52 helloworld.c
$ touch helloworld.c
$ make helloworld &>/dev/null
$ ls -l
total 12
-rwxr-xr-x 1 al al 4497 Aug  1 20:54 helloworld
-rw-r--r-- 1 al al   54 Aug  1 20:53 helloworld.c
$


yamah писал(а):
01.08.2012 18:06
В угоду GNU.org, которые открыто заявляют, что они первичнее. ядра.
проект gnu внезапно первичнее проекта linux·

p.s. у вас ссылка битая·

yamah писал(а):
01.08.2012 18:06
Но они — остов системы; система была создана их объединением.
совершенно верно·
ведь unix-like операционная система — это не только ядро и libc, но и ещё ряд казалось бы ненужных вещей: шелл там, загрузчик, грепы там всякие…

Bizdelnick писал(а):
01.08.2012 20:51
sash-kan писал(а):
01.08.2012 20:11
нет, я подразумеваю то, о чём написал·

Тогда и следует писать GNU/*, а не GNU.
я подразумевал операционную систему gnu·
почему мне следует писать её название как-то по-другому?

Bizdelnick писал(а):
01.08.2012 20:51
знак объединения
куда обращаться с идеями по поводу переименования — я уже написал выше·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: лили ли лиnux?

Сообщение Bizdelnick »

sash-kan писал(а):
01.08.2012 21:07
я подразумевал операционную систему gnu·
почему мне следует писать её название как-то по-другому?

Второй круг.
Потому что операционной системы GNU (как и gnu) не существует. Так можно было бы назвать GNU/Hurd, но ты, по твоим же словам, подразумевал не её.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: лили ли лиnux?

Сообщение watashiwa_daredeska »

sash-kan писал(а):
01.08.2012 20:39
что делает любая libc в unix-like операционной системе? она предоставляет api
…для языка C.
sash-kan писал(а):
01.08.2012 20:39
та custom library, которая используется gc,
…предоставляет API для другого языка.

sash-kan писал(а):
01.08.2012 20:39
она _напрямую_, без доп.посредников, обращается при необходимости к ядру·
В этом смысле да, библиотека Go делает ровно то же самое — обращается к ядру без посредников.

sash-kan писал(а):
01.08.2012 20:39
конечно, unix-like·
Принципиальной разницы нет.

sash-kan писал(а):
01.08.2012 20:39
а по умолчанию применяется gccgo?
Ну, в поставке Debian и при сборке из исходников с сайта разработчиков — gc. Параметр я указал просто для перестраховки от разночтений.

sash-kan писал(а):
01.08.2012 20:39
потому, что си-api — это стандарт в unix-like операционках вообще и перечисленных уже неоднократно дистрибутивах в частности?
Вот этот конкретный C-API. Но кроме него есть и другие стандартные API.

sash-kan писал(а):
01.08.2012 20:39
эти реализации api обращаются к linux-у напрямую или через libc?
И так, и так. Программы, которые написаны с прицелом на переносимость, используют переносимые API/фреймворки.

Да, POSIX — популярный фреймворк. Может быть, самый популярный. Однако, вот ведь в чем вопрос: часть ли это ОС или всего лишь самый популярный фреймворк? Из общего определения ОС, данного выше, получается, что libc — всего лишь фреймворк. Если требовать, чтобы имя его разработчика было включено в название дистрибутива, то возникает вопрос: а почему только его, пусть и самого популярного? Почему не трёх первых по популярности? Почему не пяти?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: лили ли лиnux?

Сообщение sash-kan »

watashiwa_darede... писал(а):
01.08.2012 21:48
пусть и самого популярного
у меня в системе в каталогах /sbin/ /bin/ /usr/bin/ /usr/sbin/ встретился только один статически слинкованный бинарник:
$ for i in /sbin/* /bin/* /usr/bin/* /usr/sbin/*; do file $i | grep -q 'statically' && echo $i; done
/sbin/ldconfig
$

надеюсь, разночтений по поводу того, код какой именно библиотеки в нём присутствует, не возникнет·

динамически слинкованных:
$ for i in /sbin/* /bin/* /usr/bin/* /usr/sbin/*; do file $i | grep -q 'dynamically' && echo $i; done | wc -l
2119

из динамически слинкованных в этих каталогах не нашлось ни одного, не использующего libc:
$ for i in /sbin/* /bin/* /usr/bin/* /usr/sbin/*; do file $i | grep -q 'dynamically' && { ldd $i | grep -q 'libc\.so' || echo $i; }; done
$

это достаточно типичная машина, мой рабочий десктоп·
да, конечно, если прошерстить весь дебиановский репозиторий, соотношение 0/(2119+1) станет (возможно) чуть больше нуля·

но было бы интересно получить картину по рабочим десктопам, где установлены другие дистрибутивы операционной системы gnu/linux·

Bizdelnick писал(а):
01.08.2012 21:39
Потому что операционной системы GNU (как и gnu) не существует.
а gnu/linux существует?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu
Контактная информация:

Re: лили ли лиnux?

Сообщение alv »

sash-kan писал(а):
01.08.2012 23:46
gnu/linux существует?

Нет, братан, это фантастика
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2042
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: лили ли лиnux?

Сообщение Stauffenberg »

sash-kan писал(а):
01.08.2012 21:07
Stauffenberg писал(а):
01.08.2012 17:28
sash-kan писал(а):
31.07.2012 22:01
увы, произвольный бинарник не умеет делать системные вызовы·

Почему же не умеет? А как же номера системных вызовов, которые мы передаем перед 0x80 прерыванием?
вот так просто? вызов прерывания, занимающий десяток байт?
а что же тогда в этом бинарнике занимает пол-мегабайта? неужели несколько тысяч раз вызывается одно и то же прерывание?

Код: Выделить всё

$ cat helloworld.c
#include<unistd.h>
main()
{
  write(1,"dest\n",5);
}

$ make SHARED=0 CC='gcc -static' helloworld &>/dev/null
$ ls -l
total 572
-rwxr-xr-x 1 al al 574469 Aug  1 20:52 helloworld
-rw-r--r-- 1 al al     54 Aug  1 20:52 helloworld.c
$ touch helloworld.c
$ make helloworld &>/dev/null
$ ls -l
total 12
-rwxr-xr-x 1 al al 4497 Aug  1 20:54 helloworld
-rw-r--r-- 1 al al   54 Aug  1 20:53 helloworld.c
$



Очень интересно, особенно про пол-мегабайта, которые потянул за собой код на С, но про assembler Вам вроди бы уже писали... речь ведь шла про любой бинарник, не правда ли? Или я что-то упустил?


hello.asm

section .text global _start string db 'Hello GNU/Linux',0xa len equ $ - string _start: mov eax, 4 mov ebx, 1 mov ecx, string mov edx, len int 0x80 mov eax, 1 int 0x80



Код: Выделить всё

> nasm -f elf64 hello.asm
> ld -s hello.o -o hello
> ./hello
Hello GNU/Linux
> l hello*
-rwxr-xr-x 1 alex users 384 Aug  1 23:05 hello*
-rw-r--r-- 1 alex users 217 Aug  1 22:57 hello.asm
-rw-r--r-- 1 alex users 752 Aug  1 23:05 hello.o
> file hello
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped
> ltrace ./hello
ltrace: Couldn't find .dynsym or .dynstr in "./hello"
> strace ./hello
execve("./hello", ["./hello"], [/* 98 vars */]) = 0
stat(NULL, Hello GNU/Linux
NULL)                        = 16
write(0, NULL, 16 <unfinished ... exit status 1>
> ldd ./hello
        not a dynamic executable
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: лили ли лиnux?

Сообщение watashiwa_daredeska »

sash-kan писал(а):
01.08.2012 23:46
у меня в системе в каталогах /sbin/ /bin/ /usr/bin/ /usr/sbin/ встретился только один статически слинкованный бинарник
И что?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: лили ли лиnux?

Сообщение sash-kan »

watashiwa_daredeska писал(а):
02.08.2012 01:13
sash-kan писал(а):
01.08.2012 23:46
у меня в системе в каталогах /sbin/ /bin/ /usr/bin/ /usr/sbin/ встретился только один статически слинкованный бинарник
И что?
именно эта строчка — «и ничего»·

а весь пост был началом ответа на вопрос:
watashiwa_darede... писал(а):
01.08.2012 21:48
Если требовать, чтобы имя его разработчика было включено в название дистрибутива, то возникает вопрос: а почему только его, пусть и самого популярного?
а теперь полный ответ:
1. а кто этого _требует_?
2. libc — не «пусть и самая популярная» библиотека, а «используемая (статически или динамически линкуемая) практически в 100% случаев» в популярных современных дистрибутивах gnu/linux (в частности, в семействах debian, suse, redhat, mandriva, slackware, gentoo, ubuntu)·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: лили ли лиnux?

Сообщение sash-kan »

Stauffenberg писал(а):
02.08.2012 01:13
про assembler Вам вроди бы уже писали
да, про ассемблер я совсем забыл, когда соглашался на уступку «helloworld на любом языке» (и ведь никто за язык не тянул!)·
действительно, ассемблерный пример в таком случае подходит·
что ж, как и обещал, соглашаюсь с этими двумя утверждениями:
watashiwa_daredeska писал(а):
31.07.2012 23:16
sash-kan писал(а):
31.07.2012 22:01
увы, произвольный бинарник не умеет делать системные вызовы·
Умеет.

sash-kan писал(а):
31.07.2012 22:01
для этого в пределах видимости должен присутствовать код libc·
либо в виде разделяемой библиотеки, либо прямо внутри бинарника (static linking):
Спорим, не должен?

возвращаемся к нашим баранам?
т.е. к тому, что
sash-kan писал(а):
01.08.2012 12:19
1. операцинная система — это посредник между программами/библиотеками и железом·
2. в unix-like системах таковым посредником является связка из (как минимум) ядра и какой-нибудь реализации libc·
3. в популярных современных дистрибутивах (в частности, в семействах debian, suse, redhat, mandriva, slackware, gentoo, ubuntu), в качестве libc используется реализация, выполненная в рамках проекта gnu·
4. разработчики из проекта gnu просят (не требуют, а просто просят) называть такую операционную систему, состоящую из (как минимум) linux и glibc, термином «gnu/linux»·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: лили ли лиnux?

Сообщение Bizdelnick »

sash-kan писал(а):
01.08.2012 23:46
а gnu/linux существует?

Лично меня это название вполне устраивает. Насколько мне известно, многих других тоже. По крайней мере, оно подразумевает наличие всех обязательных компонентов операционной системы.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
taaroa
Сообщения: 1319

Re: лили ли лиnux?

Сообщение taaroa »

sash-kan писал(а):
01.08.2012 23:46
а gnu/linux существует?

если нет ничего, ни ГНУ, ни ЛИНАКСА, то это пространство ума. когда что-то появляется, будь то вывод команды ls или паника ядра, - это ясность ума, беспрепятственная игра. то, что возможно и то и другое, - это неограниченность ума.
:wq
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: лили ли лиnux?

Сообщение sash-kan »

чтобы закончить с примером на go (в отличие от ассемблера, он, по-моему не удовлетворяет изложенному условию):
watashiwa_daredeska писал(а):
01.08.2012 21:48
sash-kan писал(а):
01.08.2012 20:39
что делает любая libc в unix-like операционной системе? она предоставляет api
…для языка C.
orly?!

Код: Выделить всё

$ ldd /usr/bin/konsole | grep libc.so
        libc.so.6 => /lib/i686/libc.so.6 (0xb75cf000)

QUOTE писал(а):
sash-kan писал(а):
01.08.2012 20:39
та custom library, которая используется gc,
…предоставляет API для другого языка.
ну а gccgo, видимо, компилирует программы не на go написанные… (Gccgo's run-time support uses glibc)

p.s. а этот go gc умеет динамическую линковку?

Bizdelnick писал(а):
02.08.2012 12:33
sash-kan писал(а):
01.08.2012 23:46
а gnu/linux существует?

Лично меня это название вполне устраивает. Насколько мне известно, многих других тоже. По крайней мере, оно подразумевает наличие всех обязательных компонентов операционной системы.
мир, дружба, жвачка?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: лили ли лиnux?

Сообщение watashiwa_daredeska »

sash-kan писал(а):
02.08.2012 12:22
возвращаемся к нашим баранам?
т.е. к тому, что
sash-kan писал(а):
01.08.2012 12:19
2. в unix-like системах таковым посредником является связка из (как минимум) ядра и какой-нибудь реализации libc·
1. Как мы выяснили, libc не обязательна для обращения к ядру напрямую .
2. libc не обращается к железу в обход ядра.
=> libc не выполняет функцию изоляции ПО от железа, эту функцию уже выполнило ядро.

libc же на самом деле выполняет функцию трансляции API ОС к некоторому другому API, т.е. обычная программная прослойка, каких очень много — UI toolkit'ы, например, занимаются ровно тем же самым.
Спасибо сказали:
Ответить