ncc
Compile .NET code into native binaries
TLDR
Bundle a Node.js application
Bundle and minify a Node.js application
Bundle and minify a Node.js application and generate source maps
Automatically recompile on changes to source files
Bundle a Node.js application into a temporary directory and run it for testing
Clean the ncc cache
SYNOPSIS
ncc [options] input_files [-o output_file]
PARAMETERS
-o
Specify the name of the output file (e.g., executable, object file, or library).
-c
Compile or assemble the source files, but do not link. Output an object file (.o).
-I
Add directory dir to the list of directories to be searched for include files.
-L
Add directory dir to the list of directories to be searched for libraries.
-l
Link with the specified library lib (e.g., -lcuda, -lcudart).
-D
Define a preprocessor macro, optionally with a value.
-g
Generate debugging information for the compiled code.
-O[0-3]
Specify the optimization level. Higher levels (e.g., -O3) apply more aggressive optimizations.
--version
Display the compiler version information.
DESCRIPTION
The command 'ncc' is not a standard or widely recognized Linux command or utility found in typical distributions. It most likely refers to the NVIDIA Compute Compiler or NVIDIA C/C++ Compiler, which is a component within the NVIDIA CUDA Toolkit or NVIDIA HPC SDK.
While users primarily interact with the nvcc driver for CUDA compilation or nvc/nvc++ for host compilation in the HPC SDK, 'ncc' historically or internally might refer to a specific phase or a backend compiler for C/C++ code. It's designed to compile C and C++ source files, potentially targeting both CPU (host) architectures and NVIDIA GPU (device) architectures, depending on its specific role within the NVIDIA toolchain.
Its exact user-facing functionality, if any, is usually subsumed or orchestrated by higher-level compiler drivers.
CAVEATS
The command 'ncc' is not a standard Linux command and does not have a dedicated man page in typical Linux distributions. Its direct availability and functionality as a user-invokable command are highly dependent on specific NVIDIA software installations (CUDA Toolkit, HPC SDK) and might refer to an internal component or an older/less common naming convention. Users typically interact with nvcc for CUDA compilation or nvc/nvc++ for C/C++ host compilation provided by NVIDIA. Direct usage of 'ncc' by end-users is uncommon.
ROLE IN COMPILATION PIPELINE
Within the NVIDIA compilation toolchain, especially for CUDA, the process involves multiple stages: preprocessing, compilation to PTX (Parallel Thread Execution) intermediate representation, assembly to SASS (Streaming Assembler) for specific GPU architectures, and linking. 'ncc' could conceptually represent a stage in this pipeline, such as compiling C/C++ host code or a specific phase of device code compilation before it's passed to other specialized tools (e.g., PTX assembler or linker). It acts as a specialized C/C++ compiler engine tailored for NVIDIA's hardware and software ecosystem.
HISTORY
The history of 'ncc' is intertwined with the development of NVIDIA's compiler technologies for both CPUs and GPUs. As NVIDIA expanded its ecosystem for parallel computing (CUDA) and high-performance computing (HPC SDK), its suite of compilers evolved. While 'nvcc' became the primary driver for CUDA, and 'nvc'/'nvc++' for host code, the term 'ncc' might represent an earlier or internal iteration, or a specific backend component used in the compilation pipeline managed by the main driver compilers.