This module provides the mapping from library names to concrete files
that can be loaded. This is used by c_import/3. While C compilers
typically allow one to specify a library as, e.g.,
-lm, the actual
naming and physical location of the file providing this library is
compiler and system dependent.
This module defines c_lib_path/2 to find the concrete file implementing
a C library. Hooks may be used to extend this predicate:
- library_path_hook/2 is called first by c_lib_path/2 and may redefine
the entire process.
- cpu_alias/2 may be used if
ldconfig -p is used to verify that a
library is compatible with the current architecture of the
- cpp(-Command, -Argv) is det
- Provide the Command and Argv for process_create/3 to call the C
proprocessor reading the C input from standard input.
- c_lib_path(+Spec, -Path, +Options) is det
- Find a shared object from Spec. Spec is one of:
- Concrete file
If spec is an atom or string denoting an existing file, this
Handled to absolute_file_name/3 using the options
extensions(['',Ext]), where Ext is the value for the
- Plain atom
Platform dependent search. Currently implemented for
- Systems that support
ldconfig -p (e.g., Linux)
Additional search strategies may be realised by defining rules for
library_path_hook/2 with the same signature.
- To be done
- - Extend the platform specific search strategies.
- ldconfig(?Name, ?Path, ?Version, ?Flags) is nondet
- True when Name is the base name of a library in the ldconfig cache.
|Name||- is the base name of the library, without version or
|Path||- is the absolute file name of the library|
|Version||- is the version extension as an atom|
|Flags||- is a list of atoms with flags about the library|
- Flush the library cache maintained for ldconfig.