A lib can be marked with @[Link(lib : String, *, ldflags : String, static : Bool, framework : String, pkg_config : String, wasm_import_module : String, dll : String)] to declare the library that should be linked when compiling the program.
At least one of the lib, ldflags, framework arguments needs to be specified.
@[Link(ldflags: "-lpcre")] will pass -lpcre straight to the linker.
@[Link("pcre")] will lookup for a shared library.
pcre using pkg-config, if not found-lpcre to the linker.@[Link("pcre", pkg_config: "libpcre")] will lookup for a shared library.
libpcre using pkg-config, if not foundpcre using pkg-config, if not found-lpcre to the linker.@[Link(framework: "Cocoa")] will pass -framework Cocoa to the linker.
@[Link(dll: "gc.dll")] will copy gc.dll to any built program. The DLL name must use .dll as its file extension and cannot contain any directory separators. The actual DLL is searched among CRYSTAL_LIBRARY_PATH, the compiler's own directory, and PATH in that order; a warning is printed if the DLL isn't found, although it might still run correctly if the DLLs are available in other DLL search paths on the system.
When an -l option is passed to the linker, it will lookup the libraries in paths passed with the -L option. Any paths in CRYSTAL_LIBRARY_PATH are added by default. Custom paths can be passed using ldflags: @[Link(ldflags: "-Lvendor/bin")].
© 2012–2026 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/1.19.0/Link.html