LINUX.ORG.RU

Ответ на: комментарий от Einstok_Fair

Блин, бротишка. Нам такие как ты не нужны вообще-то. А кому надо, возьмёт себе линукс и так без проблем.

Под вендой тебе пришлось бы втыкать в дизассемблер, куда уж проще то с исходниками.

anonymous ()
Ответ на: комментарий от Minona

Иногда пользователью нужно знать и как. Мне это нужно для того, чтобы точно убедиться, в каком случае утилита file считает библиотеку библиотекой, а не выполняемым файлом.

Einstok_Fair ★★☆ ()
Ответ на: комментарий от Einstok_Fair

Неправильно поставленный вопрос. Тебе нужно убедится, что программы могут корректно линковаться с получившимся файлом (кстати ты можешь посмотреть и ассемблер нагенерированный компилятором).

anonymous ()

Огласи тогда уж весь список.
Как работает утилита dd ?
Как работает утилита rm ?
Как работает утилита cat ?
Как работает утилита grep ?
Как работает утилита zcat ?
Как работает утилита zgrep ?
Как работает утилита xzcat ?
Как работает утилита xzgrep ?
Как работает утилита make ?
Как работает утилита cmake ?
Как работает утилита gcc ?
Как работает утилита clang ?
Как работает утилита nasm ?
Как работает утилита yasm ?
Как работает утилита cp ?
Как работает утилита mv ?
Как работает утилита nano ?
Как работает утилита date ?
Как работает утилита systemd ?

Deleted ()
Ответ на: комментарий от Deleted

У тебя в одном списке софт из 60-70 годов, рассматриваемый даже в книжках типа K&R (гнутые варианты немного перегружены фичами), и сложные современные системы, которые прочитать и понять немного затруднительно. Ещё ed забыл.

anonymous ()
Ответ на: комментарий от anonymous

убедится, что программы могут корректно линковаться с получившимся файлом

не только. Было очень интересно узнать, что если запустить на выполнение некоторые библиотеки, то они выводят справку о себе.

Ну и прочие best practices

Einstok_Fair ★★☆ ()

На 99% file это читает так:
если по смещению 16 2-байтовое LE целое равно 3, то
при +x: pie executable
иначе : shared object
где +x — атрибут исполнимости.

bormant ★★★★★ ()
Ответ на: комментарий от Einstok_Fair

В buffer_init есть такое место:
https://github.com/file/file/blob/master/src/buffer.c#L44

void
buffer_init(struct buffer *b, int fd, const void *data, size_t len)
{
	b->fd = fd;
	if (b->fd == -1 || fstat(b->fd, &b->st) == -1)
		memset(&b->st, 0, sizeof(b->st));

Проверить отладчиком, не вертает ли -1 на тех выполнимых файлах fstat().

bormant ★★★★★ ()
Ответ на: комментарий от bormant

Проверить отладчиком,

не умею

не вертает ли -1 на тех выполнимых файлах fstat().

это было бы очень странно, файлы как файлы.

$ stat library.so 
  File: library.so
  Size: 7344      	Blocks: 16         IO Block: 4096   regular file
Device: fb00h/64256d	Inode: 4261396     Links: 1
Access: (0755/-rwxr-xr-x)  Uid: ( 1000/    user)   Gid: ( 1001/    user)
Access: 2018-11-20 11:36:49.216323456 +0300
Modify: 2018-11-20 11:34:42.674528257 +0300
Change: 2018-11-20 11:36:45.665272855 +0300
 Birth: -

Einstok_Fair ★★☆ ()