5.5. Specifying compilers and flags
Changing the compilers that PMIx uses to build itself uses the
standard GNU Autoconf mechanism of setting special environment variables
either before invoking
configure or on the
The following environment variables are recognized by
CC: C compiler to use
CFLAGS: Compile flags to pass to the C compiler
CPPFLAGS: Preprocessor flags to pass to the C compiler
LDFLAGS: Linker flags to pass to all compilers
LIBS: Libraries to pass to all compilers (it is rarely necessary for users to need to specify additional
PKG_CONFIG: Path to the
PMIx latest does not contain any C++ code. However, you can use a C++ compiler to build PMIx if you so choose.
For example, to build with a specific instance of
shell$ ./configure \ CC=/opt/gcc-a.b.c/bin/gcc CFLAGS=-m64 ...
The PMIx community generally suggests using the above
command line form for setting different compilers (vs. setting
environment variables and then invoking
above form will save all variables and values in the
file, which makes post-mortem analysis easier if problems occur.
Note that setting
CFLAGS (etc.) does not affect the
flags used by the wrapper compiler. In the above, example, you may
also need to add
-m64 to the
shell$ ./configure CFLAGS=-m64 \ --with-wrapper-cflags=-m64 ...
Failure to do this will result in PMIx-based applications failing to compile / link properly.
See the Customizing wrapper compiler behavior section for more details.
Note that if you intend to compile PMIx with a
make other than
the default one in your
PATH, then you must either set the
environment variable before invoking PMIx’s
configure script, or
MAKE=your_make_prog to configure. For example:
shell$ ./configure MAKE=/path/to/my/make ...
This could be the case, for instance, if you have a shell alias for
make, or you always type
gmake out of habit. Failure to tell
configure which non-default
make you will use to compile PMIx
can result in undefined behavior (meaning: don’t do that).
Note that you may also want to ensure that the value of
LD_LIBRARY_PATH is set appropriately (or not at all) for your build
(or whatever environment variable is relevant for your operating
system). For example, some users have been tripped up by setting to
use a non-default C compiler via the
CC environment variable,
but then failing to set
LD_LIBRARY_PATH to include the directory
containing that non-default C compiler’s support libraries.
This causes PMIx’s
configure script to fail when it tries to
compile / link / run simple C programs.