bsd/citrus iconv

Garrett Wollman wollman at hergotha.csail.mit.edu
Thu Feb 23 19:27:44 UTC 2012


In article <86lint8k0x.fsf at ds4.des.no>, des at des.no writes:
>I beg to differ.  The c99 man page explicitly lists a number of
>libraries (libc, libi, libpthread, libm, librt, libtrace, libxnet and
>liby), and states that libc will contain all functions *except* those
>defined in a short list of headers.  This list does not include
><iconv.h>; therefore, iconv must be in libc, cf. the original meaning of
>"the exception that proves the rule".

You missed the bit on the next page:

	It is unspecified whether the libraries libc.a, libm.a,
	librt.a, libpthread.a, libl.a, liby.a, or libxnet exist as
	regular files. The implementation may accept as -l operands
	names of objects that do not exist as regular files.

(This is from the 2001 approved standard; the text that you're looking
at may differ slightly.)

The "c99" implementation may implement the "-l c" option, whether
implied or explicit, any way it wants, provided that the symbols
described are defined during linking.  In particular, it may realize
those symbols through any set of actual underlying archive or shared
libraries, regardless of the mechanics of how they are bound to the
executable.  This is also independent of what arguments are required
for any other compiler invocation, as POSIX only specifies "c99".
(The next POSIX revision will specify only "c11".)

-GAWollman



More information about the freebsd-arch mailing list