I am having trouble linking an application. I can link using an old .a file, but with the newer .a file, the link fials because it can't find _ZN3MPI2Op4InitEPFvPKvPviR
ypeEEb which c++filt demangles to:
MPI::Op::Init(void (*)(void const*, void*, int, MPI::Datatype const&), bool)
The C version of this entry point is: MPI_Op_Create
And, indeed in the old .so file (which I can link), there is a reference to MPI_Op_Create and no reference to ZN3MPI2Op4InitEPFvPKvPviRK
peEEb whereas in the new .so file (which I cannot link),
there is a reference to _ZN3MPI2Op4InitEPFvPKvPviR
ypeEEb but none to MPI_Op_Create.
Unfortunately, I can't recreate the old .so file, so I have to work from the new one.
The .a file from which the .so files are built contains references to both _ZN3MPI2Op4InitEPFvPKvPviR
ypeEEb and MPI_Op_Create. (The two .so files are built from different versions of those .a files, but all versions of the .a files contain references to both entry points).
What might have changed to cause the new .so file to reference _ZN3MPI2Op4InitEPFvPKvPviR
ypeEEb instead of MPI_Op_Create.