clang
and clang++
on most systems are the same executable. One is merely a symbolic link to the other.
The program checks to see what name it is invoked under, and:
- for
clang
, compiles code as C - for
clang++
, compiles code as C++
In C++, the compiler generates names for functions differently than C - this is because you can have multiple functions with the same name (but different) parameters. This is called "name mangling" - and that's what you are seeing.
You can use a tool called c++filt
to "demangle" the names.
Example:
$ c++filt __Z7hqxInitv
hqxInit()
More information here: why clang++ behaves differently from clang since the former is a symbol link of the latter?