PMIXCC(1)

πŸ“¦
version 6.1.1~rc2 Β· 2 versions
, in ubuntu stonking

πŸ’– PMIXCC πŸ’–

okay bestie, welcome to OpenPMIx's wrapper compiler page, aka pmixcc β€” the PMIx wrapper compiler 🌸. yes it's a whole man page, yes it's giving very "read me, i promise i'm useful" energy, and yes we're gonna get through it together. grab a boba πŸ§‹, we're going in.


✨ SYNOPSIS ✨ (the vibes, abbreviated)

pmixcc [--showme | --showme:compile | --showme:link] ...

that's the whole shape of it fr fr. the rest is just ✨ options ✨.


πŸŽ€ OPTIONS πŸŽ€

here's the menu, and ngl, it slaps:

  • --showme β€” this one comes in several different variants (peep below πŸ‘€). None of the variants invokes the underlying compiler; they all just tell you how the underlying compiler would have been invoked if you hadn't used --showme. the basic --showme option outputs the command line that would be executed to compile the program.
Note: 🚨 if a non-filename argument is passed on the command line, the --showme option will not display any additional flags. for example, both pmixcc --showme and pmixcc --showme my_source.c will show all the wrapper-supplied flags. But pmixcc --showme -v will only show the underlying compiler name and -v. 😭 yeah, that's just how it is.
  • --showme:compile β€” outputs the compiler flags that would have been supplied to the underlying compiler. πŸ’…
  • --showme:link β€” outputs the linker flags that would have been supplied to the underlying compiler. πŸ”₯
  • --showme:command β€” outputs the underlying compiler command (which may be one or more tokens). πŸ‘‘
  • --showme:incdirs β€” outputs a space-delimited (but otherwise undecorated) list of directories that the wrapper compiler would have provided to the underlying compiler to indicate where relevant header files are located. 🌸
  • --showme:libdirs β€” outputs a space-delimited (but otherwise undecorated) list of directories that the wrapper compiler would have provided to the underlying linker to indicate where relevant libraries are located. πŸ¦‹
  • --showme:libs β€” outputs a space-delimited (but otherwise undecorated) list of library names that the wrapper compiler would have used to link an application. for example: pmix util. ⭐
  • --showme:version β€” outputs the version number of PMIx. 🏷️
  • --showme:help β€” output a brief usage help message. πŸ†˜

and like, for other options that can be passed through pmixcc? see the man page for your underlying compiler, bestie. that's their business, not ours. 🀝


🌈 DESCRIPTION 🌈

conceptually, the role of these commands is quite simple: transparently add relevant compiler and linker flags to the user's command line that are necessary to compile / link PMIx-based programs, and then invoke the underlying compiler to actually perform the command. that's it. that's the whole job. ✨

as such, these commands are frequently referred to as "wrapper" compilers because they do not actually compile or link applications themselves; they only add in command line flags and invoke the back-end compiler. no cap. 🫢


🧚 OVERVIEW 🧚

pmixcc is a convenience wrapper for the underlying C compiler. translation of a PMIx-based program requires the linkage of the PMIx-specific libraries which may not reside in one of the standard search directories of ld(1). it also often requires the inclusion of header files what may also not be found in a standard location. 😩 classic.

pmixcc passes its arguments to the underlying C compiler along with the -I, -L and -l options required by PMIx-based programs. πŸ’…

the PMIx Team strongly encourages using the wrapper compiler instead of attempting to link to the PMIx library manually. this allows the specific implementation of PMIx to change without forcing changes to linker directives in users' Makefiles. indeed, the specific set of flags and libraries used by the wrapper compiler depends on how PMIx was configured and built; the values can change between different installations of the same version of PMIx. 😳 so like, don't hardcode, i'm begging.

indeed, since the wrappers are simply thin shells on top of an underlying compiler, there are very, very few compelling reasons not to use PMIx's wrapper compiler. when it is not possible to use the wrapper directly, the --showme:compile and --showme:link options should be used to determine what flags the wrapper would have used. for example:

shell$ cc -c file1.c `pmixcc --showme:compile`

shell$ cc -c file2.c `pmixcc --showme:compile`

shell$ cc file1.o file2.o `pmixcc --showme:link` -o my_program

see? iconic. πŸ’–


πŸ“ FILES πŸ“

the strings that the wrapper compiler inserts into the command line before invoking the underlying compiler are stored in a text file created by PMIx and installed to $pkgdata/pmixcc-wrapper-data.txt, where:

  • $pkgdata is typically $prefix/share/pmix
  • $prefix is the top installation directory of PMIx

it is rarely necessary to edit this file, but it can be examined to gain insight into what flags the wrapper is placing on the command line. peek if you're curious. πŸ‘€


🌱 ENVIRONMENT VARIABLES 🌱

by default, the wrapper uses the compiler that was selected when PMIx was configured. this compiler was either found automatically by PMIx's "configure" script, or was selected by the user via the CC environment variable before configure was invoked. additionally, other arguments specific to the compiler may have been selected by configure. πŸ› οΈ

these values can be selectively overridden by either editing the text files containing this configuration information (see the FILES section πŸ‘†), or by setting selected environment variables of the form pmix_value.

valid value names are:

  • CPPFLAGS β€” flags added when invoking the preprocessor βœ‚οΈ
  • LDFLAGS β€” flags added when invoking the linker πŸ”—
  • LIBS β€” libraries added when invoking the linker πŸ“š
  • CC β€” C compiler πŸ§‘β€πŸ’»
  • CFLAGS β€” C compiler flags 🚩

Copyright 2014-2026, OpenPMIx Community.


okay that's the whole page, you ate that πŸ’…βœ¨. this lil masterpiece is from the OpenPMIx manuals, dated Aug 04, 2026, and yeah β€” you're officially a wrapper compiler understander now. go forth and --showme, bestie πŸ«ΆπŸŒΈπŸ’–

πŸ“¦ where this page comes from