I have written a package in C++ that is parallelized using MPI. However, since there are so many complicated templates, it will take about half an hour for it to get compiled. Naturally many users have complained about this.
To resolve this I thought the best course of action would be to precompile all of the code. Then bundle all of the shared objects into one, but WITHOUT linking to MPI. The end user will get the shared object according to their platform and link it to implementation of MPI on their system.
However after doing so and taking "nm -B --undefined-only". I saw that there are symbols that are defined only in openmpi (the header files I used were from openmpi), for example ompi_mpi_op_sum or ompi_mpi_int.
Although I use the standard definitions in the header files there are macros that do this:
MPI_Sum-> ompi_mpi_op_sum MPI_Int-> ompi_mpi_int
I looked around the and I could not find anything on the subject. Is there anyway to overcome this? or another solution to this problem?