A lib declaration groups C functions and types that belong to a library.
@[Link("pcre")]
lib LibPCRE
end
Although not enforced by the compiler, a lib's name usually starts with Lib.
Attributes are used to pass flags to the linker to find external libraries:
@[Link("pcre")] will pass -lpcre to the linker, but the compiler will first try to use pkg-config.@[Link(ldflags: "...")] will pass those flags directly to the linker, without modification. For example: @[Link(ldflags: "-lpcre")]. A common technique is to use backticks to execute commands: @[Link(ldflags: "`pkg-config libpcre --libs`")].@[Link(framework: "Cocoa")] will pass -framework Cocoa to the linker (only useful in Mac OS X).Attributes can be omitted if the library is implicitly linked, as in the case of libc.