aboutsummaryrefslogtreecommitdiff
path: root/man/man1/9c.1
blob: 6745ae35d05adb3abe39f503caba224f15e6418c (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
171
172
173
174
175
.TH 9C 1
.SH NAME
9c, 9a, 9l, 9ar \- C compiler, assembler, linker, archiver
.SH SYNOPSIS
.B 9c
.I file
\&...
.PP
.B 9a
.I file
\&...
.PP
.B 9l
[
.I -o
.I target
]
.I object
\&...
[
.I library
\&...
]
[
.BI -L path
\&...
]
[
.BI -l library
\&...
]
.PP
.B 9ar
.I key
[
.I posname
]
.I afile
[
.I file
\&...
]
.SH DESCRIPTION
These programs are shell scripts that invoke the appropriate standard tools
for the current operating system and architecture.
One can use them to write portable recipes for mkfiles.
.PP
.I 9c
compiles the named C
.I files
into object files for the current system.
The system C compiler is invoked with warnings enabled,
with the symbol
.B PLAN9PORT
is defined in the C preprocessor, and with
.B $PLAN9/include
on the include path.
.PP
.I 9c
also defines
.B __sun__
on SunOS systems and
.B __Linux26__
on Linux systems with 2.6-series kernels.
.PP
.I 9a
assembles the named files into object files for the current system.
Unlike some system assemblers, it does
.I not
promise to run the C preprocessor on the source files.
.PP
.I 9l
links the named object files and libraries to create the target executable.
Each
.B -l
option specifies that a library named
.BI lib library .a
be found and linked.
The
.B -L
option adds directories to the library search path.
.I 9l
invokes the system linker with
.B $PLAN9/lib
already on the library search path.
.PP
.I 9ar
maintains object file archives called libraries.
The exact set of valid command keys varies from system to system,
but
.I 9ar
always provides the following key characters:
.TP
.B d
Delete 
.I files 
from the archive file.
.TP
.B r
Replace
.I files 
in the archive file, or add them if missing.
.TP
.B t
List a table of contents of the archive.
If names are given, only those files are listed.
.TP
.B x
Extract the named files.
If no names are given, all files in the archive are
extracted.
In neither case does
.B x
alter the archive file.
.TP
.B v
Verbose.
Give a file-by-file
description of the making of a
new archive file from the old archive and the constituent files.
With
.BR t ,
give a long listing of all information about the files,
somewhat like a listing by
.IR ls (1),
showing
.br
.ns
.IP
.B
	mode uid/gid size date name
.TP
.B c
Create.
Normally
.I 9ar
will create a new archive when
.I afile
does not exist, and give a warning.
Option 
.B c
discards any old contents and suppresses the warning.
.PD
.PP
When a
.BR d ,
.BR r ,
or
.BR m
.I key
is specified,
.I 9ar
inserts a table of contents, required by the linker, at
the front of the library.
The table of contents is
rebuilt whenever the archive is modified.
.SH EXAMPLE
.TP
.L
9c file1.c file2.c file3.c
Compile three C source files.
.TP
.L
9a file4.s
Assemble one assembler source file.
.TP
.L
9ar rvc lib.a file[12].o
Archive the first two object files into a library.
.L
9l -o prog file3.o file4.o lib.a
Link the final two object files and any necessary objects from the library
into an executable.
.SH SOURCE
.B /usr/local/plan9/bin