pkgLibs function

R Package Compiled Code Library Dependencies (on Unix-alikes)

R Package Compiled Code Library Dependencies (on Unix-alikes)

List some system level information about the compiled code library, typically its dependencies, for packages with compiled code; for Unix-alikes or more generally when cmd is installed locally.

pkgLibs(pkg, cmd = if(Sys.info()[["sysname"]] == "Darwin") "otool -L" else "ldd")

Arguments

  • pkg: character vector of package names of installed packages.
  • cmd: a character string with the name of an OS / system level program (to be called via system(cmd, ..)) which gives information about the shared library (of compiled code), also known as DLL (dynamically loadable library) or so ((dynamic) shared object) library. The default, "ldd" is a standard binary utility on Unix-alike platforms such as Linux. On macOS, "oTool -L" is used by default.

Details

Note that there seems some language confusion as DLL on Windows is also used for Dynamic-link Library and Wikipedia warns about confusing the two concepts (dynamically loaded .. vs dynamic-link .. ).

Returns

a named list with one entry per package in pkg, the names being the directory / folder names of the corresponding pkgs from pkg.

The exact structure of such entries is currently subject to change and you should not rely on its exact format for now.

References

Dynamic Loading on Wikipedia, https://en.wikipedia.org/wiki/Dynamic_loading

On Windows, DLL is also used for Dynamic-link library, https://en.wikipedia.org/wiki/Dynamic-link_library.

man ldd from a terminal on a valid OS.

Author(s)

Martin Maechler

See Also

dyn.load(), library.dynam(), and getLoadedDLLs().

Also, .C, .Call which use such DLLs.

Examples

# for the example only using standard R packages : myPkgs <- c("stats", "MASS", "rpart", "Matrix") pl <- pkgLibs(myPkgs) pl stopifnot(exprs = { is.list(pl) length(pl) == length(myPkgs) is.character(pkgD <- names(pl)) }) ## Have seen this failing when a strange development version of "Matrix" was picked up: try( stopifnot( dir.exists(pkgD)) )
  • Maintainer: Martin Maechler
  • License: GPL (>= 2)
  • Last published: 2024-11-05