summaryrefslogtreecommitdiff
path: root/man/ru/mcpu-ld.1
blob: b57cb93a422cacac12ff9fa1a8fc2514c31db014 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
.TH MCPU-LD 1 "Октябрь 2026" "LibMCPU" "Команды пользователя"

.SH ИМЯ
mcpu-ld \- компоновщик объектов, архивов и shared libraries MCPU
.SH СИНТАКСИС
.B mcpu-ld
.RI [ опции-компоновки ] " -o output input ..."
.SH ОПИСАНИЕ
.B mcpu-ld
компонует MELF ET_REL objects и статические библиотеки MCPU. Он создаёт partial
ET_REL, полностью статический ABI-v1 ET_EXEC, frozen ABI-v3 startup-dynamic
ET_EXEC или ABI-v3 ET_DYN shared object.
.PP
Без
.BR -r ,
.B --shared
и
.B --dynamic
по умолчанию создаётся статический ABI-v1 ET_EXEC.
.SH РЕЖИМЫ ВЫХОДА
.TP
.B -r
Создать один partial-link MELF ET_REL. Неразрешённые strong symbols и RELA
могут остаться для последующей final link. STACK, HEAP, SONAME и shared objects
к этому режиму не относятся.
.TP
.B --shared
Создать frozen ABI-v3 MELF ET_DYN. Обязателен логический
.BR --soname .
Shared object может иметь только allocated .text/.data/.bss и не владеет
lifecycle, model spaces, STACK или HEAP.
.TP
.B --dynamic
Создать frozen ABI-v3 startup-dynamic MELF ET_EXEC. Normal dependencies
записываются как DT_NEEDED SONAME.
.SH AUTOMATIC HLL CRT
Для final static/dynamic ET_EXEC output mcpu-ld сначала анализирует явно
перечисленные входные ET_REL objects и только затем обрабатывает -l libraries.
Распознаются две compiler-normalized complete-program формы:
.nf
PROGRAM: strong GLOBAL/FUNC main + fini в одном ET_REL
MODEL:   strong GLOBAL/FUNC init + life + fini в одном ET_REL
.fi
.PP
PROGRAM и MODEL roots взаимоисключающие. Incomplete или split MODEL definitions
отклоняются; PROGRAM main/fini также должны принадлежать одному defining ET_REL.
Смешивание HLL roots с низкоуровневым владением _start/_life является ошибкой.
Library members и shared-library definitions не участвуют в классификации
complete program.
.PP
После классификации mcpu-ld автоматически вставляет:
.nf
PROGRAM: crt0.o crti.o <explicit input objects> crtn.o
MODEL:   crt1.o crti.o <explicit input objects> crtn.o
.fi
CRT objects загружаются из <MCPU-root>/lib/mcpu, где <MCPU-root> — активный
installation/system root. Отсутствующий или нечитаемый обязательный CRT object
является fatal error. Поиска fallback CRT в другом root и перехода HLL link в
low-level linking нет.
.PP
Low-level ET_EXEC inputs, самостоятельно владеющие _start/_life, компонуются без
HLL CRT insertion. Режимы -r и --shared не выполняют HLL complete-program
classification или CRT insertion.
.SH SYSTEM ROOT И CONFIGURATION
.TP
.B --no-config
Не читать mcpu-ld.conf; executable-derived runtime root и его default lib
остаются активными.
.TP
.BI --sys-root= ПУТЬ
Использовать ПУТЬ как MCPU system root, не читать configuration files и взять
ПУТЬ/lib как системный каталог библиотек. Относительный путь разрешается от
рабочего каталога запуска.
.TP
.BI --sys-root " ПУТЬ"
Эквивалентная двухаргументная форма.
.TP
.B --dump-config
Вывести effective MCPU configuration и завершиться.
.TP
.B --print-search-dirs
Вывести effective library search directories в порядке поиска и завершиться.
.SH БИБЛИОТЕКИ
.TP
.BI -L " каталог"
.TQ
.BI -L каталог
Добавить явный каталог поиска. -L каталоги идут раньше configured system path.
.TP
.BI -l " имя"
.TQ
.BI -l имя
Искать libИМЯ. ABI-v1 и -r рассматривают только libИМЯ.a; ABI-v3 dynamic/shared
в каждом каталоге сначала рассматривает libИМЯ.so, затем libИМЯ.a.
.TP
.B --static
Принудить все -l искать только libИМЯ.a, не меняя выбранный output mode.
Архивные members встраиваются статически и не создают DT_NEEDED.
.SH SHARED-LIBRARY IDENTITY
.TP
.BI --soname= ИМЯ
.TQ
.BI --soname " ИМЯ"
Установить обязательный SONAME ABI-v3 ET_DYN. Логическое ИМЯ не должно содержать '/'.
.SH ПАРАМЕТРЫ EXECUTABLE
.TP
.BI -o " файл"
Записать результат в файл.
.TP
.BI --stack-size= размер
Фиксированный размер STACK; положительный и кратный 16. Default 1048576.
.TP
.BI --heap-size= размер
Начальный HEAP. Default 1048576.
.TP
.BI --heap-limit= размер
Неизменяемый maximum HEAP. Default 1048576.
.TP
.B --no-heap
Не создавать PT_MCPU_HEAP.
.TP
.BR -v ", " --verbose
После успешной компоновки вывести краткую сводку о созданном MELF object.
По умолчанию успешный запуск ничего не выводит.
.TP
.BR -h ", " --help
Вывести справку.
.TP
.B --version
Вывести имя программы, идентификатор инструментария MCPU и версию, затем завершить работу.
.TP
.B --dump-version
Вывести только номер версии пакета MCPU и завершить работу.
.PP
Размер по умолчанию задаётся в байтах. Поддерживаются K/KiB, M/MiB, G/GiB;
K, M, G используют двоичные множители.
.SH АРХИВЫ И SYMBOL RESOLUTION
Статические библиотеки MCPU — обычные deterministic UNIX ar containers с MELF
ET_REL members. Member извлекается, когда он удовлетворяет текущему
неразрешённому strong GLOBAL symbol. Один unresolved WEAK сам по себе member не
вытягивает.
.SH ФАЙЛЫ
.TP
.I <runtime-root>/lib/mcpu/crt0.o, crt1.o, crti.o, crtn.o
Обязательные automatic HLL CRT objects для final PROGRAM/MODEL executable link.
.TP
.I <runtime-root>/etc/mcpu-ld.conf
Configuration из переносимого дерева MCPU.
.TP
.I /etc/mcpu/mcpu-ld.conf
Необязательный machine-wide override.
.TP
.I $HOME/.mcpu/etc/mcpu-ld.conf
Необязательный user override.
.SH СТАТУС ЗАВЕРШЕНИЯ
Ноль при успехе; ненулевое значение при ошибке опций, validation, symbol
resolution, relocation или записи результата.
.SH ПРИМЕРЫ
.nf
mcpu-ld --stack-size=64K --no-heap -o program main.o helper.o
mcpu-ld -r -o combined.o a.o b.o
mcpu-ld --shared --soname=libfoo.so.1 -o libfoo.so.1.0.0 foo.o
mcpu-ld --dynamic -L ./lib -lfoo -o program main.o
.fi
.SH СМ. ТАКЖЕ
.BR mcpu-as (1),
.BR mcpu-ar (1),
.BR mcpu-run (1),
.BR mcpu-readelf (1),
.BR libmcpu (7)