[petsc-dev] petsc/master: unable to link in C++ with last night PETSC_WITH_EXTERNAL_LIB variable changes
Smith, Barry F.
bsmith at mcs.anl.gov
Sat Feb 10 14:27:10 CST 2018
Eric,
Ok thanks for the update, and for not requiring us to undo recent "improvements" to our handling of compiler libraries.
Barry
> On Feb 10, 2018, at 2:25 PM, Éric Chamberland <Eric.Chamberland at giref.ulaval.ca> wrote:
>
> ok, let put our in-house code away, simply try this simple example:
>
> ----------
>
> #include <mpi.h>
>
> int main() {
> /*empty!! let's see the .o */
>
> return 1;
>
> }
> ---------
>
> then:
>
> g++ -c test.cc -I/opt/openmpi-1.10.2/include -o test.o
>
> nm -C test.o | grep "MPI::" | grep " U "
>
> U MPI::Win::Free()
> U MPI::Comm::Comm()
> U MPI::Datatype::Free()
>
> so: as soon you are compiling a c++ file with this openmpi 1.10.2 (even if you use gcc -c test.cc -I/opt/openmpi-1.10.2/include -o test.o in my example) it *requires* you to link with mpi_cxx lib...
>
> That's the "problem", that's *my* fault to have relied on a PETSC variable to link with an mpi c++ lib....
>
> So I will add the mpi_cxx lib to our makefiles for these older versions of mpi...
>
> Sorry for the annoyance...
>
> But, as usual, thanks for your fast responses guys, you all deserve a gold medal!!! :)
>
> Eric
>
>
> Le 18-02-10 à 14:37, Jed Brown a écrit :
>> "Smith, Barry F." <bsmith at mcs.anl.gov> writes:
>>
>>> Then the testing is more involved, need to first check if C++ bindings exist and then check if supplied automatically by compilers (like on Cray). Annoying, I'd prefer to avoid but I still don't have the definitive word if C++ bindings are the issue from Eric.
>> The undefined symbols are C++ bindings and they are referenced from a
>> source file named StatistiqueMemoire.* which is not part of PETSc or a
>> PETSc dependency. We don't reference them so we shouldn't try to link
>> them.
>
More information about the petsc-dev
mailing list