# Linux

An example CMakeLists.txt is included with the NDK examples shipped in the NDK sub-directory of the Documentation installed with NUKE. CMake is a preferred way of building plugins, the use of other build systems may not produce compatible plugins.

Plug-ins compiled with GCC versions 4.8.2 through 4.8.5 without C++14 support should be compatible. Please refer to GCC’s ABI Policy and Guidelines. If your preferred Linux distribution makes use of patched GCC libraries, please consult the applicable compatibility notes of your distribution.

libc++, the C++ standard library implementation of the LLVM project, is not binary compatible with libstdc++, the C++ standard library implementation of GCC. Our plug-in interfaces only support objects that are created via libstdc++ (associated with the above GCC compiler version range). While untested and unsupported by The Foundry, using the clang compiler and linking against libstdc++ instead of libc++, targeted at C++14, may produce working plug-ins.

For Nuke 11.0 the use of Intel compilers are untested and unsupported. If you want to build with the Intel compiler, you may substitute it for g++. However you must make sure you use the libstdc++ includes and libs from a compatible GCC version, as outlined above, in order to be compatible.

We are using the C++14 standard, and it is advised to use the same standard for plugin builds to avoid any potential standard library and binary compatibility problems. To this effect please use the ‘-std=c++14’ compiler switch.

On Linux, NUKE is built on a Centos 7.4 Linux 64-bit machine, using GCC 6.3.1. We ship and link against a GCC 6.3.1 standard library at runtime. We are using the devtoolset-2 package to set up our development environment.

The shared object files (.so) resulting from a plug-in build should either be placed in your ~/.nuke directory, or a location in your NUKE plug-in path, in order to be loaded into NUKE.

See Building & Installing Plug-ins for information on creating your first plug-in.