Написать программу "run", которая умеет загружать и выполнять произвольный объектный файл. Например:
Здесь файл hello.o получен компиляцией Си-шного кода в обычный объектник:$ run hello hello.o
hello world!
Для примера возьмём простейший код:сс -с hello.с
Программа "run" получает два аргумента. Первый аргумент - имя функции, которую надо вызвать. Второй аргумент - имя объектного файла. Для определённости пусть дело происходит в Линуксе, на архитектуре x86_64. Хотя неплохо бы и на arm64 под MacOS.#include <stdio.h>
void hello() {
printf("hello world!\n");
}

no subject
Date: 2025-09-15 12:35 (UTC)no subject
Date: 2025-09-15 13:08 (UTC)#!/bin/bash cat >main.c << EOF void $1(); int main(void) { $1(); return 0; } EOF cc main.c $2 ./a.outno subject
Date: 2025-09-15 15:55 (UTC)no subject
Date: 2025-09-15 17:25 (UTC)работает при условии, что на входе не main функция
для поддержки мэйна надо будет _start в asm переписать
no subject
Date: 2025-09-15 17:51 (UTC)no subject
Date: 2025-09-15 18:00 (UTC)no subject
Date: 2025-09-16 01:58 (UTC)под Windows в Kernel Model загружал модули драйверов Atheros из ELF формата для Linux.
Иходников их не было
no subject
Date: 2025-09-16 02:25 (UTC)Я когда-то мастерил такое для загружаемых драйверов в FreeBSD. Когда ещё родные загружаемые драйвера не придумали.
no subject
Date: 2025-09-16 02:29 (UTC)И с ядром через несложный API
Достаточно написать совместимые обёртки
no subject
Date: 2025-09-22 20:46 (UTC)По-суті, лінкування на етапі system boot. Класно працювало, і елегантно!
Навіть у QNX і HURD такого немає.
no subject
Date: 2025-09-23 00:05 (UTC)тогда функция run будет делать .so, далее dlopen, resolve pointer-to-hello, call it
no subject
Date: 2025-09-23 07:28 (UTC)no subject
Date: 2025-09-23 20:16 (UTC)