crosstool-NG(1)

πŸ“¦
version 1.29.0 Β· 3 versions
, in arch rolling

πŸ‘‘ crosstool-NG(1) β€” the user-commands glow-up ✨

okay so this is the manual page for ct-ng / crosstool-NG, bestie β€” it lives in the User Commands section of your man pages, and it's literally your whole guide to building cross-toolchains without crying. let's get into it πŸ’…


✨ NAME ✨

ct-ng, crosstool-NG β€” build cross-toolchains, that's the whole vibe 🫢


🌸 SYNOPSIS 🌸

ct-ng ACTION

πŸ¦‹ DESCRIPTION πŸ¦‹

building a cross-toolchain can be a real pain. like, genuinely. 😭

but crosstool-NG makes it easy to build cross-toolchains β€” and it lets you take all the juice out of your target by configuring the different components of the toolchain according to the targeted processor. it's giving "custom-fit, no notes" energy, fr fr. ✨


πŸŽ€ ACTIONS πŸŽ€

here are the most commonly used actions. for other actions, please see the documentation in /usr/share/doc/crosstool-ng β€” it's all there, iykyk πŸ’–

  • help β€” prints a little help text. tiny, cute, useful.
  • menuconfig β€” configures crosstool-NG using a configurator menu very similar to that of the Linux kernel. yeah, that menu. iconic behavior. πŸ‘‘
  • oldconfig β€” applies the options found in an existing .config file, and asks you about newer options if there are any.
  • saveconfig β€” saves the current crosstool-NG configuration, and the associated components' config files, into a sample. samples get saved in their own sub-directory β€” named after the target's tuple β€” inside the samples sub-directory of the current directory. you can recall a sample later by calling ct-ng with the target tuple it represents. 🎁
  • savedefconfig β€” saves the current configuration to a mini-defconfig file that contains only the strictly required symbols to reproduce the configuration. defconfig files are much smaller than a complete .config, so it's easy to send by mail. and since only non-default symbols show up in a defconfig, meaningful values are easy to spot. also, defconfig files play nice with newer versions of crosstool-NG. by default the mini-defconfig is saved to a file named defconfig β€” unless the variable $DEFCONFIG is set, in which case it gets saved to the file referenced by $DEFCONFIG. πŸ’Œ
note: only the .config file for crosstool-NG is saved. the config files for the components are not saved. use saveconfig for that. 🫢
  • defconfig β€” configures crosstool-NG using a mini-defconfig file (previously saved with savedefconfig, or hand-edited by you, you little artisan). the default mini-defconfig is read from the file defconfig, unless the variable $DEFCONFIG is set, in which case the mini-defconfig is read from the file referenced by $DEFCONFIG.
  • build β€” builds the configured toolchain. the main character step, honestly. πŸ”₯
  • clean β€” removes files generated by crosstool-NG for itself (these are mostly the configurators' binaries).
  • distclean β€” same as clean, but it also removes the toolchain build directory, the downloaded files, and the .config configuration file. the generated toolchain is left untouched, and so are samples β€” those are not removed. ✨
  • updatetools β€” updates the config.guess and config.sub scripts. these scripts are used by crosstool-NG to canonicalise the machines' name (host, build and target machines). keeping it canonical, periodt. πŸ’…

🌈 ENVIRONMENT 🌈

  • STOP, RESTART β€” respectively stops and restarts the build just before this step. to restart a step, a previous build should have run at least to that step, or further. ⭐

the list of steps is viewable with the action list-steps.

note: if the Keep only the last-saved step's state option is enabled, only the most recently saved step is retained β€” so the build can only be restarted from that step. plan accordingly bestie 😭

πŸ’€ EXIT VALUE πŸ’€

the ct-ng frontend is in fact a make(1) script. see the man page for make(1) to have the meaning of the exit values. yes, it's outsourcing, but it's outsourcing correctly. πŸ™ˆ


πŸ”₯ SECURITY πŸ”₯

don't run as root! like seriously, don't. πŸ™…β€β™€οΈ

great care has been taken to avoid mistakes, but bug-free programs don't exist. during normal operation, crosstool-NG removes entire directories. if you run as root, and there is a bug, or you mis-configured crosstool-NG, entire important directories could be removed (eg. /usr) β€” although crosstool-NG will refuse to install toolchains in some well known critical directories. still. don't run as root. πŸ’€


🧚 AUTHORS 🧚

Yann E. MORIN and a lot of contributors. legends, all of them. 🌸


πŸ’œ SEE ALSO πŸ’œ

you can find more in-depth documentation in /usr/share/doc/crosstool-ng.

please have a look at the original crosstool ⟨http://www.kegel.com/crosstool⟩ by Daniel KEGEL β€” the ancestor, the icon, the origin story. 🌟


okay that's the page!! πŸ’– this was version 1.29.0, dated Fri Oct 23 14:23:26 2026, written under, well β€” it's crosstool-NG(1) and that's the whole footer, bestie. go build something iconic πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from
  • arch rolling: crosstool-ng 1.29.0-1 Β· CC-BY-SA-2.5 AND GPL-2.0-only AND LGPL-2.1-only
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms