[erlang-questions] Compiling erlang core modules with +native and -smp

Mikael Pettersson <>
Tue May 27 17:24:43 CEST 2008

Colm Dougan writes:
 > Hi list,
 > I had to compile the Debian version of erlang from source (to apply
 > the zlib patch) and I noticed that there was an optional native.diff
 > patch which builds the core erlang modules (stdlib, io_lib etc) using
 > the +native option.  I decided to try this patch as I need all the
 > performance I can get :)
 > Anyway, later when I ran some code with this erlang using the -smp
 > option to 'erl' I got lots of warnings like this :
 > =INFO REPORT==== 27-May-2008::15:31:24 ===
 > <HiPE (v 3.6.3)> Warning: not loading native code for module io_lib:
 > it was compiled for an incompatible runtime system; please regenerate
 > native code for this runtime system
 > I guess this is because the +native code is not compatible with -smp
 > and modules need to be compiled with both +native *and* -smp in order
 > for the native code to be used.

No, native and SMP are fully compatible. However, native code compiled
for an SMP runtime is incompatible with a non-SMP runtime, and native
code compiled for a non-SMP runtime is incompatible with an SMP runtime.
(And there is little we can do about that incompatibility without
sacrificing runtime performance on non-SMP, alas.)

You need to take care to use the same SMP-or-not runtime system at
compile-time as you intend to use at runtime.


More information about the erlang-questions mailing list