Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Summary

Similar to the 2022.1 stack before it, the 2022.2 stack uses an intermediate layer to build against in order to make it independent of the underlying OS. However, unlike the 2022.1 stack that used a cross compile environment with a full suite of utilities and tools, the 2022.2 stack uses only the cross compile toolchain. This should reduce the overhead and actually integrate better with the underlying OS.

...

There are some environment variables that are problematic when loaded with environment modules as they can conflict with each other as well as system software. These variables are generally used for development. They are:

  • C_INCLUDE_PATH 

  • CPLUS_INCLUDE_PATH 

  • INCLUDE 

  • LIBRARY_PATH 

  • LD_LIBRARY_PATH 

Technically, LD_LIBRARY_PATH is a run-time variable and not used for development, but it is also the one that causes the most problems. All of these variables have been left unset for the 2022.2 stack by default. If these are needed for development, or LD_LIBRARY_PATH is needed at run-time for user compiled software, there is a way to activate them. See below for details.

...

This stack should behave like other stacks and feel "less different" than the 2022.1 stack due to only replacing the toolchain. Using the 2022.2 stack with environment modules is just like any other stack on Argon. There are a few things to be aware of when using the software packages for development, however. As noted above, several development related variables are not set. The CMAKE_PREFIX_PATH and PKG_CONFIG_PATH variables are set and those should be sufficient for software that uses cmake and pkgconfig. In addition, every package has a ROOT_PACKAGE variable, where PACKAGE is the actual name of the package, pointing to the root of the installation. For instance, ROOT_ZLIB will point to the root of the zlib installation, so library and header paths could be set with $ROOT_ZLIB/lib and $ROOT_ZLIB/include, respectively, in your Makefile. However , there may be situations where the unset development variables may be useful. For those cases, there are corresponding -dev modules that can be loaded to replace the respective default module. For instance, if zlib/1.2.13_gcc-9.5.0-dev is loaded, it will replace zlib/1.2.13_gcc-9.5.0 and set the appropriate values for the *INCLUDE_PATH and *LIBRARY_PATH variables for zlib. You may also need to have one or more -dev modules loaded at run-time if your compiled package was not built with RPATH support. 

...