]>
Commit | Line | Data |
---|---|---|
0f6863a5 RP |
1 | .\" Copyright (c) 1991 Free Software Foundation |
2 | .\" See section COPYING for conditions for redistribution | |
0f6863a5 RP |
3 | .TH ar 1 "5 November 1991" "cygnus support" "GNU Development Tools" |
4 | .de BP | |
5 | .sp | |
6 | .ti \-.2i | |
7 | \(** | |
8 | .. | |
9 | ||
10 | .SH NAME | |
938fa52b | 11 | ar \- create, modify, and extract from archives. |
0f6863a5 RP |
12 | |
13 | .SH SYNOPSIS | |
14 | .hy 0 | |
15 | .na | |
16 | .BR ar " [\|" "-" "\|]"\c | |
27e0fef5 | 17 | .I {dmpqrtx}[abcilosSuvV] \c |
0f6863a5 RP |
18 | [\|\c |
19 | .I membername\c | |
20 | \&\|] \c | |
21 | .I archive\c | |
22 | \& \c | |
23 | .I files\c | |
24 | \&.\|.\|. | |
25 | ||
26 | .ad b | |
27 | .hy 1 | |
28 | .SH DESCRIPTION | |
29 | The GNU \c | |
30 | .B ar\c | |
31 | \& program creates, modifies, and extracts from | |
32 | archives. An \c | |
33 | .I archive\c | |
34 | \& is a single file holding a collection of | |
35 | other files in a structure that makes it possible to retrieve | |
36 | the original individual files (called \c | |
37 | .I members\c | |
38 | \& of the archive). | |
39 | ||
40 | The original files' contents, mode (permissions), timestamp, owner, and | |
41 | group are preserved in the archive, and may be reconstituted on | |
42 | extraction. | |
43 | ||
44 | GNU \c | |
45 | .B ar\c | |
46 | \& can maintain archives whose members have names of any | |
47 | length; however, depending on how \c | |
48 | .B ar\c | |
49 | \& is configured on your | |
50 | system, a limit on member-name length may be imposed (for compatibility | |
51 | with archive formats maintained with other tools). If it exists, the | |
52 | limit is often 15 characters (typical of formats related to a.out) or 16 | |
53 | characters (typical of formats related to coff). | |
54 | ||
55 | \c | |
56 | .B ar\c | |
57 | \& is considered a binary utility because archives of this sort | |
58 | are most often used as \c | |
59 | .I libraries\c | |
60 | \& holding commonly needed | |
61 | subroutines. | |
62 | ||
63 | \c | |
64 | .B ar\c | |
65 | \& will create an index to the symbols defined in relocatable | |
66 | object modules in the archive when you specify the modifier `\|\c | |
67 | .B s\c | |
68 | \|'. | |
69 | Once created, this index is updated in the archive whenever \c | |
70 | .B ar\c | |
71 | \& | |
72 | makes a change to its contents (save for the `\|\c | |
73 | .B q\c | |
74 | \|' update operation). | |
75 | An archive with such an index speeds up linking to the library, and | |
76 | allows routines in the library to call each other without regard to | |
77 | their placement in the archive. | |
78 | ||
79 | You may use `\|\c | |
80 | .B nm \-s\c | |
81 | \|' or `\|\c | |
1f72cab1 | 82 | .B nm \-\-print\-armap\c |
0f6863a5 RP |
83 | \|' to list this index |
84 | table. If an archive lacks the table, another form of \c | |
85 | .B ar\c | |
86 | \& called | |
87 | \c | |
88 | .B ranlib\c | |
89 | \& can be used to add just the table. | |
90 | ||
91 | \c | |
92 | .B ar\c | |
93 | \& insists on at least two arguments to execute: one | |
94 | keyletter specifying the \c | |
95 | .I operation\c | |
96 | \& (optionally accompanied by other | |
97 | keyletters specifying \c | |
98 | .I modifiers\c | |
99 | \&), and the archive name to act on. | |
100 | ||
101 | Most operations can also accept further \c | |
102 | .I files\c | |
103 | \& arguments, | |
104 | specifying particular files to operate on. | |
105 | ||
106 | .SH OPTIONS | |
107 | GNU \c | |
108 | .B ar\c | |
109 | \& allows you to mix the operation code \c | |
110 | .I p\c | |
111 | \& and modifier | |
112 | flags \c | |
113 | .I mod\c | |
114 | \& in any order, within the first command-line argument. | |
115 | ||
116 | If you wish, you may begin the first command-line argument with a | |
117 | dash. | |
118 | ||
119 | The \c | |
120 | .I p\c | |
121 | \& keyletter specifies what operation to execute; it may be | |
122 | any of the following, but you must specify only one of them: | |
123 | ||
124 | .TP | |
125 | .B d | |
126 | \c | |
127 | .I Delete\c | |
128 | \& modules from the archive. Specify the names of modules to | |
129 | be deleted as \c | |
130 | .I files\c | |
131 | \&; the archive is untouched if you | |
132 | specify no files to delete. | |
133 | ||
134 | If you specify the `\|\c | |
135 | .B v\c | |
136 | \|' modifier, \c | |
137 | .B ar\c | |
138 | \& will list each module | |
139 | as it is deleted. | |
140 | ||
141 | .TP | |
142 | .B m | |
143 | Use this operation to \c | |
144 | .I move\c | |
145 | \& members in an archive. | |
146 | ||
147 | The ordering of members in an archive can make a difference in how | |
148 | programs are linked using the library, if a symbol is defined in more | |
149 | than one member. | |
150 | ||
151 | If no modifiers are used with \c | |
152 | .B m\c | |
153 | \&, any members you name in the | |
154 | \c | |
155 | .I files\c | |
156 | \& arguments are moved to the \c | |
157 | .I end\c | |
158 | \& of the archive; | |
159 | you can use the `\|\c | |
160 | .B a\c | |
161 | \|', `\|\c | |
162 | .B b\c | |
163 | \|', or `\|\c | |
164 | .B i\c | |
165 | \|' modifiers to move them to a | |
166 | specified place instead. | |
167 | ||
168 | .TP | |
169 | .B p | |
170 | \c | |
171 | .I Print\c | |
172 | \& the specified members of the archive, to the standard | |
173 | output file. If the `\|\c | |
174 | .B v\c | |
175 | \|' modifier is specified, show the member | |
176 | name before copying its contents to standard output. | |
177 | ||
178 | If you specify no \c | |
179 | .I files\c | |
180 | \&, all the files in the archive are printed. | |
181 | ||
182 | .TP | |
183 | .B q | |
184 | \c | |
185 | .I Quick append\c | |
186 | \&; add \c | |
187 | .I files\c | |
188 | \& to the end of \c | |
189 | .I archive\c | |
190 | \&, | |
191 | without checking for replacement. | |
192 | ||
193 | The modifiers `\|\c | |
194 | .B a\c | |
195 | \|', `\|\c | |
196 | .B b\c | |
197 | \|', and `\|\c | |
198 | .B i\c | |
199 | \|' do \c | |
200 | .I not\c | |
201 | \& affect this | |
202 | operation; new members are always placed at the end of the archive. | |
203 | ||
204 | The modifier `\|\c | |
205 | .B v\c | |
206 | \|' makes \c | |
207 | .B ar\c | |
208 | \& list each file as it is appended. | |
209 | ||
210 | Since the point of this operation is speed, the archive's symbol table | |
211 | index is not updated, even if it already existed; you can use `\|\c | |
212 | .B ar s\c | |
213 | \|' or | |
214 | \c | |
215 | .B ranlib\c | |
216 | \& explicitly to update the symbol table index. | |
217 | ||
27e0fef5 ILT |
218 | However, too many different systems assume quick append rebuilds the |
219 | index, so GNU | |
220 | .B ar | |
221 | implements `\|\c | |
222 | .B q\c | |
223 | \|' as a synonym for `\|\c | |
224 | .B r\c | |
225 | \|'. | |
226 | ||
0f6863a5 RP |
227 | .TP |
228 | .B r | |
229 | Insert \c | |
230 | .I files\c | |
231 | \& into \c | |
232 | .I archive\c | |
233 | \& (with \c | |
234 | .I replacement\c | |
235 | \&). This | |
236 | operation differs from `\|\c | |
237 | .B q\c | |
238 | \|' in that any previously existing members | |
239 | are deleted if their names match those being added. | |
240 | ||
241 | If one of the files named in \c | |
242 | .I files\c | |
243 | \& doesn't exist, \c | |
244 | .B ar\c | |
245 | \& | |
246 | displays an error message, and leaves undisturbed any existing members | |
247 | of the archive matching that name. | |
248 | ||
249 | By default, new members are added at the end of the file; but you may | |
250 | use one of the modifiers `\|\c | |
251 | .B a\c | |
252 | \|', `\|\c | |
253 | .B b\c | |
254 | \|', or `\|\c | |
255 | .B i\c | |
256 | \|' to request | |
257 | placement relative to some existing member. | |
258 | ||
259 | The modifier `\|\c | |
260 | .B v\c | |
261 | \|' used with this operation elicits a line of | |
262 | output for each file inserted, along with one of the letters `\|\c | |
263 | .B a\c | |
264 | \|' or | |
265 | `\|\c | |
266 | .B r\c | |
267 | \|' to indicate whether the file was appended (no old member | |
268 | deleted) or replaced. | |
269 | ||
270 | .TP | |
271 | .B t | |
272 | Display a \c | |
273 | .I table\c | |
274 | \& listing the contents of \c | |
275 | .I archive\c | |
276 | \&, or those | |
277 | of the files listed in \c | |
278 | .I files\c | |
279 | \& that are present in the | |
280 | archive. Normally only the member name is shown; if you also want to | |
281 | see the modes (permissions), timestamp, owner, group, and size, you can | |
282 | request that by also specifying the `\|\c | |
283 | .B v\c | |
284 | \|' modifier. | |
285 | ||
286 | If you do not specify any \c | |
287 | .I files\c | |
288 | \&, all files in the archive | |
289 | are listed. | |
290 | ||
291 | If there is more than one file with the same name (say, `\|\c | |
292 | .B fie\c | |
293 | \|') in | |
294 | an archive (say `\|\c | |
295 | .B b.a\c | |
296 | \|'), `\|\c | |
297 | .B ar t b.a fie\c | |
298 | \|' will list only the | |
299 | first instance; to see them all, you must ask for a complete | |
300 | listing\(em\&in our example, `\|\c | |
301 | .B ar t b.a\c | |
302 | \|'. | |
303 | ||
304 | .TP | |
305 | .B x | |
306 | \c | |
307 | .I Extract\c | |
308 | \& members (named \c | |
309 | .I files\c | |
310 | \&) from the archive. You can | |
311 | use the `\|\c | |
312 | .B v\c | |
313 | \|' modifier with this operation, to request that | |
314 | \c | |
315 | .B ar\c | |
316 | \& list each name as it extracts it. | |
317 | ||
318 | If you do not specify any \c | |
319 | .I files\c | |
320 | \&, all files in the archive | |
321 | are extracted. | |
322 | ||
323 | .PP | |
324 | ||
325 | A number of modifiers (\c | |
326 | .I mod\c | |
327 | \&) may immediately follow the \c | |
328 | .I p\c | |
329 | \& | |
330 | keyletter, to specify variations on an operation's behavior: | |
331 | ||
332 | .TP | |
333 | .B a | |
334 | Add new files \c | |
335 | .I after\c | |
336 | \& an existing member of the | |
337 | archive. If you use the modifier \c | |
338 | .B a\c | |
339 | \&, the name of an existing archive | |
340 | member must be present as the \c | |
341 | .I membername\c | |
342 | \& argument, before the | |
343 | \c | |
344 | .I archive\c | |
345 | \& specification. | |
346 | ||
347 | .TP | |
348 | .B b | |
349 | Add new files \c | |
350 | .I before\c | |
351 | \& an existing member of the | |
352 | archive. If you use the modifier \c | |
353 | .B b\c | |
354 | \&, the name of an existing archive | |
355 | member must be present as the \c | |
356 | .I membername\c | |
357 | \& argument, before the | |
358 | \c | |
359 | .I archive\c | |
360 | \& specification. (same as `\|\c | |
361 | .B i\c | |
362 | \|'). | |
363 | ||
364 | .TP | |
365 | .B c | |
366 | \c | |
367 | .I Create\c | |
368 | \& the archive. The specified \c | |
369 | .I archive\c | |
370 | \& is always | |
371 | created if it didn't exist, when you request an update. But a warning is | |
372 | issued unless you specify in advance that you expect to create it, by | |
373 | using this modifier. | |
374 | ||
52af6a44 ILT |
375 | .TP |
376 | .B f | |
377 | Truncate names in the archive. | |
378 | .B ar | |
379 | will normally permit file names of any length. This will cause it to | |
380 | create archives which are not compatible with the native | |
381 | .B ar | |
382 | program on some systems. If this is a concern, the | |
383 | .B f | |
384 | modifier may be used to truncate file names when putting them in the | |
385 | archive. | |
386 | ||
0f6863a5 RP |
387 | .TP |
388 | .B i | |
389 | Insert new files \c | |
390 | .I before\c | |
391 | \& an existing member of the | |
392 | archive. If you use the modifier \c | |
393 | .B i\c | |
394 | \&, the name of an existing archive | |
395 | member must be present as the \c | |
396 | .I membername\c | |
397 | \& argument, before the | |
398 | \c | |
399 | .I archive\c | |
400 | \& specification. (same as `\|\c | |
401 | .B b\c | |
402 | \|'). | |
403 | ||
404 | .TP | |
405 | .B l | |
406 | This modifier is accepted but not used. | |
407 | ||
408 | .TP | |
409 | .B o | |
410 | Preserve the \c | |
411 | .I original\c | |
412 | \& dates of members when extracting them. If | |
413 | you do not specify this modifier, files extracted from the archive | |
414 | will be stamped with the time of extraction. | |
415 | ||
416 | .TP | |
417 | .B s | |
418 | Write an object-file index into the archive, or update an existing one, | |
419 | even if no other change is made to the archive. You may use this modifier | |
420 | flag either with any operation, or alone. Running `\|\c | |
421 | .B ar s\c | |
422 | \|' on an | |
423 | archive is equivalent to running `\|\c | |
424 | .B ranlib\c | |
425 | \|' on it. | |
426 | ||
27e0fef5 ILT |
427 | .TP |
428 | .B S | |
429 | Do not generate an archive symbol table. This can speed up building a | |
430 | large library in several steps. The resulting archive can not be used | |
431 | with the linker. In order to build a symbol table, you must omit the | |
432 | `\|\c | |
433 | .B S\c | |
434 | \|' modifier on the last execution of `\|\c | |
435 | .B ar\c | |
436 | \|', or you must run `\|\c | |
437 | .B ranlib\c | |
438 | \|' on the archive. | |
439 | ||
0f6863a5 RP |
440 | .TP |
441 | .B u | |
442 | Normally, \c | |
443 | .B ar r\c | |
444 | \&.\|.\|. inserts all files | |
445 | listed into the archive. If you would like to insert \c | |
446 | .I only\c | |
447 | \& those | |
448 | of the files you list that are newer than existing members of the same | |
449 | names, use this modifier. The `\|\c | |
450 | .B u\c | |
451 | \|' modifier is allowed only for the | |
452 | operation `\|\c | |
453 | .B r\c | |
454 | \|' (replace). In particular, the combination `\|\c | |
455 | .B qu\c | |
456 | \|' is | |
457 | not allowed, since checking the timestamps would lose any speed | |
458 | advantage from the operation `\|\c | |
459 | .B q\c | |
460 | \|'. | |
461 | ||
462 | .TP | |
463 | .B v | |
464 | This modifier requests the \c | |
465 | .I verbose\c | |
466 | \& version of an operation. Many | |
467 | operations display additional information, such as filenames processed, | |
468 | when the modifier `\|\c | |
469 | .B v\c | |
470 | \|' is appended. | |
471 | ||
1f72cab1 DM |
472 | .TP |
473 | .B V | |
474 | This modifier shows the version number of | |
475 | .BR ar . | |
476 | ||
0f6863a5 RP |
477 | .PP |
478 | ||
479 | .SH "SEE ALSO" | |
480 | .RB "`\|" binutils "\|'" | |
481 | entry in | |
482 | .B | |
483 | info\c | |
484 | \&; | |
485 | .I | |
486 | The GNU Binary Utilities\c | |
487 | , Roland H. Pesch (October 1991). | |
488 | .BR nm ( 1 )\c | |
489 | \&, | |
5740d9df | 490 | .BR ranlib ( 1 )\c |
0f6863a5 RP |
491 | \&. |
492 | ||
493 | .SH COPYING | |
494 | Copyright (c) 1991 Free Software Foundation, Inc. | |
495 | .PP | |
496 | Permission is granted to make and distribute verbatim copies of | |
497 | this manual provided the copyright notice and this permission notice | |
498 | are preserved on all copies. | |
499 | .PP | |
500 | Permission is granted to copy and distribute modified versions of this | |
501 | manual under the conditions for verbatim copying, provided that the | |
502 | entire resulting derived work is distributed under the terms of a | |
503 | permission notice identical to this one. | |
504 | .PP | |
505 | Permission is granted to copy and distribute translations of this | |
506 | manual into another language, under the above conditions for modified | |
507 | versions, except that this permission notice may be included in | |
508 | translations approved by the Free Software Foundation instead of in | |
509 | the original English. |