Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.
The Intel sign-in experience has changed to support enhanced security controls. If you sign in, click here for more information.

OS Developement with ICC

I have a few questions regarding the Intel C++ Compiler in a context of OS development;

  • Can I omit all usage and linkage with bundled libraries such as OpenMP?
  • Can the linker output binary code without any file container code such as ELF or COFF?
  • When reading /help I see that .asm files are supported, does ICC natively compile MASM type assembly code? Not inline that is.
  • How do I utilize ICC without the need of Visual Studio?
0 Kudos
4 Replies
Black Belt
The OpenMP based performance libraries are optional installations. You certainly could avoid calling or linking those functions, in which case it makes no difference whether you have installed them.
I don't think you have a choice about .obj file format. Maybe I don't understand your question.
I think you will need to invoke explicitly the tool which makes the .obj format of your choice from .asm. icc for linux automatically passes .s files on to as (assembler provided by linux distro) but Visual Studio doesn't appear to provide an equivalent.
ICL, in general, depends on the header files, linker, and libraries from Visual Studio. If you supplied all your own headers, you could make .obj or .asm files by compiling from command line without using any Visual Studio components. In normal usage, you can't do anything useful without the Visual Studio components.
I tried to compile a sample dummy program earlier this week and encountered an error message relating to a requirement of the OpenMP library to compile. Which then was missing.
I'll post the exact error message when I get back home.
Is there no linker bundled with Intel C++? I though xilink did this for me?
So, I am requireded to have MASM installed as well to be able to compile assembly code and link it with ICC code?
When doing OS developement it is crucial not to include any standard libraries since these would pollute the low level execution code, such as the bootloader etc. Therefore I never use any standard libraries or headers, so these are not a requirement for me. Although when I try to execute icl.exe I get a "Visual Studio not found in PATH" or similar.

For your work, I would recommend checking out the /Qfreestanding compiler option (

As Tim explained, we do require an instance of Visual Studio (or in certain cases a version of the Platform SDK - see the system requirements in the Release Notes for more information) because we do use Microsoft's linker, runtime libraries and otherutilities. xilink.exe is a wrapper around Microsoft's link.exe, and not an independent linker in its own right.
Hi Brandon, thank you for your reply. It clarified one or two things, I am however unsure on how to suit ICC to fit my OS development needs.

First of all, today I mainly use NASM for my assembly needs. NASM outputs RDOFF object files, I suppose that ICC outputs COFF object files?

There might some way to circumvein this by converting one format to another, but that leaves me with the linker issue. Since link.exe doesn't do any other linking than to PE format, I need either plain binary or ELF.

Does ICC output in any other Object formats?