How to build Mozc for Linux desktop
May 22, 2026 ยท View on GitHub
Summary
If you are not sure what the following commands do, please check the descriptions below and make sure the operations before running them.
git clone https://github.com/google/mozc.git
cd mozc/src
bazelisk build package --config release_build
bazel-bin/unix/mozc.zip contains built files.
System Requirements
Due to the diverse nature of Linux desktop ecosystem, continuous builds on GitHub Actions are the best example on how Mozc executables for Linux desktop can be built and tested against existing test cases.
The following sections describe relevant software components that are necessary to build Mozc for Linux desktop.
Bazelisk
Bazelisk is a wrapper of Bazel to use the specific version of Bazel.
The Bazel version specified in src/.bazeliskrc is what
continuous builds are testing against.
See the following document for detail on how Bazelisk determines the Bazel version.
โ ๏ธ Bazel version mismatch is a major source of build failures. If you manually install Bazel then use it instead of Bazelisk, pay extra attention to which version of Bazel you are using.
C++ toolchain
GCC or Clang is needed to build Mozc.
While Linux continuous builds currently use GCC, Mozc's C++ code is designed to be compatible with Clang (for macOS, Windows, Android, and Google internal use).
๐ก See .github/workflows/linux.yaml on which
version of GCC is tested against.
๐ก Like many other Bazel-based C++ projects, Mozc relies on
rules_cc specified in
MODULE.bazel to automatically detect C++ toolchains in
the host environment.
Packages
Development packages referenced in pkg_config_repository at
src/MODULE.bazel need to be installed beforehand.
# iBus
pkg_config_repository(
name = "ibus",
packages = [
"glib-2.0",
"gobject-2.0",
"ibus-1.0",
],
)
# Qt for Linux
pkg_config_repository(
name = "qt_linux",
packages = [
"Qt6Core",
"Qt6Gui",
"Qt6Widgets",
],
)
๐ก pkg_config_repository is not a bazel standard functionality. It is a custom
macro defined in
src/bazel/pkg_config_repository.bzl.
Build instructions
Get the Code
You can download Mozc source code as follows.
git clone https://github.com/google/mozc.git
cd mozc/src
Hereafter you can do all the operations without changing directory.
Build Mozc
You should be able to build Mozc for Linux desktop as follows, assuming
bazelisk is in your $PATH.
bazelisk build package --config release_build
package is an alias to build Mozc executables and archive them into
mozc.zip.
Clean Bazel's build cache
๐ก You may have some build errors when you update the build environment or configurations. Try the following command to clean Bazel's build cache.
bazelisk clean --expunge
Troubleshooting: Linker error relocation refers to a discarded section
If you encounter linker errors related to .sframe sections (e.g., relocation refers to a discarded section when using GCC 15+ and LLD 19+ in non-release
builds), you can append --config no_sframe to disable SFrame generation:
bazelisk build package --config no_sframe
How to customize installation locations
Here is a table of contents in mozc.zip and their actual build target names.
| build target | installation location |
|---|---|
//server:mozc_server | /usr/lib/mozc/mozc_server |
//gui/tool:mozc_tool | /usr/lib/mozc/mozc_tool |
//renderer:mozc_renderer | /usr/lib/mozc/mozc_renderer |
//unix/ibus/ibus_mozc | /usr/lib/ibus-mozc/ibus-engine-mozc |
//unix/ibus:gen_mozc_xml | /usr/share/ibus/component/mozc.xml |
//unix:icons | /usr/share/ibus-mozc/... |
//unix:icons | /usr/share/icons/mozc/... |
//unix/emacs:mozc.el | /usr/share/emacs/site-lisp/emacs-mozc/mozc.el |
//unix/emacs:mozc_emacs_helper | /usr/bin/mozc_emacs_helper |
To customize above installation locations, modify
src/config.bzl.
๐ก The following command makes the specified file untracked by Git.
git update-index --assume-unchanged src/config.bzl
๐ก This command reverts the above change.
git update-index --no-assume-unchanged src/config.bzl
Bazel command examples
Bazel User Guide
Run all tests
bazelisk test ... --build_tests_only -c dbg
...means all targets under the current and subdirectories.
Run tests under the specific directories
bazelisk test base/... composer/... --build_tests_only -c dbg
<dir>/...means all targets under the<dir>/directory.
Run tests without the specific directories
bazelisk test ... --build_tests_only -c dbg -- -base/...
--means the end of the flags which start from-.-<dir>/...means exclusion of all targets under thedir.
Run the specific test
bazelisk test base:util_test -c dbg
util_testis defined inbase/BUILD.bazel.
Output logs to stderr
bazelisk test base:util_test --test_arg=--stderrthreshold=0 --test_output=all
- The
--test_arg=--stderrthreshold=0 --test_output=allflags show the output of unitests to stderr.
Examples of environment-specific options
JDK options
bazelisk test ... --java_runtime_version=remotejdk_21
C/C++ compiler options
bazelisk test ... --repo_env=CC=gcc-14 --repo_env=CXX=g++-14
Build Mozc for Linux Desktop with GYP (deprecated):
โ ๏ธ The GYP build is deprecated and no longer supported.
Please check the previous version for more information. https://github.com/google/mozc/blob/2.29.5374.102/docs/build_mozc_in_docker.md#build-mozc-for-linux-desktop-with-gyp-maintenance-mode