Using Intel's C compiler

Stefan Lankes edited this page Jul 9, 2016 · 1 revision

If you are interested to use Intel's C/C++ compiler instead of the GCC, you have to guarantee with the compiler flag -ffreestanding that the compiler doesn't use the standard environment of your host system. Instead of using the standard path, you have to set with the compiler flag -I the include path to HermitCore's environment. However, Intel's compiler creates per default object files for the host system. Our toolchain includes the program x86_64-hermit-elfedit that is able to convert with the flag --output-osabi HermitCore these files to HermitCore's object files. For linking all object files to a HermitCore executable, you have to use the linker of our toolchain because it includes a valid linker script, which is required to build a bootable executable.

To summarize this guideline, you find below an abstract of a Makefile, which creates a HermitCore executable for the stream benchmark.

ELFEDIT_FOR_TARGET = x86_64-hermit-elfedit
CC_FOR_TARGET = x86_64-hermit-gcc
CC = icc
CFLAGS = -m64 -O3 -xHost -I$(TOPDIR)/hermit/usr/x86/x86_64-hermit/include/ -openmp -ffreestanding
STRIP_DEBUG = --strip-debug
KEEP_DEBUG = --only-keep-debug

default: stream

stream.o: stream.c
    $(CC) -c $(CFLAGS) -o $@ $<
    $(ELFEDIT_FOR_TARGET) --output-osabi HermitCore $@

stream: stream.o
    $(CC_FOR_TARGET) -fopenmp -o $@ $<
    $(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym
    $(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.