shared-libraries.md
September 8, 2023 ยท View on GitHub
Shared libraries with GraalVM and Bazel
GraalVM can build native shared libraries from Java or polyglot code. This functionality is integrated with these
rules, via the shared_library target attribute on native_image:
load("@rules_graalvm//:defs.bzl", "native_image")
java_library(
name = "example",
srcs = ["..."],
)
native_image(
name = "some_name",
shared_library = True,
deps = [
":example",
],
)
How main_class works with shared libraries
Even when building a shared library, GraalVM typically needs a main_class. Instead of becoming a runnable entrypoint,
the main_class is used by the Native Image compiler as the starting point for points-to analysis and code gen.
Alternatively, the @CEntryPoint API can be used to define library entrypoints. See here for more information.