Да.
Либо технические средства, либо поверить на слово. Например, разработчикам компилятора: http://golang.org/doc/go_faq.html#How_is_t...ort_implemented
А как насчет ASM'а?
Модератор: Модераторы разделов
Да.
Либо технические средства, либо поверить на слово. Например, разработчикам компилятора: http://golang.org/doc/go_faq.html#How_is_t...ort_implemented
А как насчет ASM'а?
unix-like операционная система — это (как минимум) какое-нибудь ядро и какая-нибудь libc·
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
я, кстати, к этому абзацу тебя и подводил·watashiwa_daredeska писал(а): ↑01.08.2012 14:32Да.
Либо технические средства, либо поверить на слово. Например, разработчикам компилятора: 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
я не перечислил все ядра, способные работать в связке с glibc?
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
эээ, Дима, я ведь тоже буквоед·
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Это не yet another libc implementation, это совсем другая библиотека.
Тут надо бы понять, что означает «функциональное отличие». Так, навскидку, могу предложить несколько пунктов:
Вообще-то, POSIX-like — это уже немного другая тема. Вот конкретно сейчас, мы выясняем, что есть ОС вообще. Если рассматривать вопрос в рамках ограничения «POSIX-like», то разговор вообще не имеет смысла, ибо тогда получается, что «ОС — это минимальный набор ПО, удовлетворяющий POSIX». Но если мы таки договоримся, что:
Упоминать главную составляющую первой — это правильно и корректно.
Но они — остов системы; система была создана их объединением.
нет, я подразумеваю то, о чём написал·
правильно·
yamah написал (точнее нарисовал)·
что делает любая libc в unix-like операционной системе? она предоставляет api, в ней реализован набор функций (ввода/вывода, работы со строками и т.д. и т.п.), и она _напрямую_, без доп.посредников, обращается при необходимости к ядру·watashiwa_darede... писал(а): ↑01.08.2012 16:57Тут надо бы понять, что означает «функциональное отличие».
это я оговорился в запарке·
предлагаю не растекаться мыслью по древу: напоминаю, что по поводу названия linux-а нет и не может быть никаких разногласий·watashiwa_darede... писал(а): ↑01.08.2012 16:57Linux (как ядро) сам по себе удовлетворяет минимальному определению ОС,
ты вот указал выше в параметрах компиляции "--compiler=gc"·
наверно потому, что си-api — это стандарт в unix-like операционках вообще и перечисленных уже неоднократно дистрибутивах в частности?watashiwa_darede... писал(а): ↑01.08.2012 16:57Почему ты считаешь, что в названии такого совокупного комплекта реализаций различных API и утилит нужно (порядочно, честно или как там еще) указывать производителя реализации лишь одного из многих таких API?
эти реализации api обращаются к linux-у напрямую или через libc? конкретные реализации в конкретных дистрибутивах·watashiwa_darede... писал(а): ↑01.08.2012 16:57В современных дистрибутивах присутствуют различные реализации множества разных спецификаций и API (freedesktop.org, OpenGL и пр.)
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
вот так просто? вызов прерывания, занимающий десяток байт?Stauffenberg писал(а): ↑01.08.2012 17:28
Почему же не умеет? А как же номера системных вызовов, которые мы передаем перед 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
$
проект gnu внезапно первичнее проекта linux·
совершенно верно·
я подразумевал операционную систему gnu·
куда обращаться с идеями по поводу переименования — я уже написал выше·
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
…для языка C.
…предоставляет API для другого языка.
В этом смысле да, библиотека Go делает ровно то же самое — обращается к ядру без посредников.
Принципиальной разницы нет.
Ну, в поставке Debian и при сборке из исходников с сайта разработчиков — gc. Параметр я указал просто для перестраховки от разночтений.
Вот этот конкретный C-API. Но кроме него есть и другие стандартные API.
И так, и так. Программы, которые написаны с прицелом на переносимость, используют переносимые API/фреймворки.
у меня в системе в каталогах /sbin/ /bin/ /usr/bin/ /usr/sbin/ встретился только один статически слинкованный бинарник:
а gnu/linux существует?Bizdelnick писал(а): ↑01.08.2012 21:39Потому что операционной системы GNU (как и gnu) не существует.
sash-kan писал(а): ↑01.08.2012 21:07вот так просто? вызов прерывания, занимающий десяток байт?Stauffenberg писал(а): ↑01.08.2012 17:28
Почему же не умеет? А как же номера системных вызовов, которые мы передаем перед 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 $
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
именно эта строчка — «и ничего»·
а теперь полный ответ:watashiwa_darede... писал(а): ↑01.08.2012 21:48Если требовать, чтобы имя его разработчика было включено в название дистрибутива, то возникает вопрос: а почему только его, пусть и самого популярного?
да, про ассемблер я совсем забыл, когда соглашался на уступку «helloworld на любом языке» (и ведь никто за язык не тянул!)·
sash-kan писал(а): ↑01.08.2012 12:191. операцинная система — это посредник между программами/библиотеками и железом·
2. в unix-like системах таковым посредником является связка из (как минимум) ядра и какой-нибудь реализации libc·
3. в популярных современных дистрибутивах (в частности, в семействах debian, suse, redhat, mandriva, slackware, gentoo, ubuntu), в качестве libc используется реализация, выполненная в рамках проекта gnu·
4. разработчики из проекта gnu просят (не требуют, а просто просят) называть такую операционную систему, состоящую из (как минимум) linux и glibc, термином «gnu/linux»·
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
orly?!
Код: Выделить всё
$ ldd /usr/bin/konsole | grep libc.so
libc.so.6 => /lib/i686/libc.so.6 (0xb75cf000)
ну а gccgo, видимо, компилирует программы не на go написанные… (Gccgo's run-time support uses glibc)
мир, дружба, жвачка?Bizdelnick писал(а): ↑02.08.2012 12:33
Лично меня это название вполне устраивает. Насколько мне известно, многих других тоже. По крайней мере, оно подразумевает наличие всех обязательных компонентов операционной системы.
1. Как мы выяснили, libc не обязательна для обращения к ядру напрямую .