<div dir="ltr"><div>Sebastian, for a long time I've been using cmake's ExternalProject capability to download and build petsc on target machines. For me it boils down to cmake code like this, where you'll also need to set your include/link paths accordingly. <br></div><br>ExternalProject_Add(<br>        petsc_external<br><br>        URL <a href="http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-3.13.3.tar.gz">http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-3.13.3.tar.gz</a><br>        URL_MD5 874090c8ea0b117877aaaaf44916943b<br><br>        BUILD_IN_SOURCE 1<br>        SOURCE_DIR ${CMAKE_BINARY_DIR}/external/petsc/<br><br>        CONFIGURE_COMMAND<br>        ${CMAKE_BINARY_DIR}/external/petsc/configure<br>        PETSC_DIR=${CMAKE_BINARY_DIR}/external/petsc<br>        PETSC_ARCH=${PETSC_ARCH_FLAG}<br>        --with-cc=${MPI_C_COMPILER} --with-cxx=${MPI_CXX_COMPILER} --with-fc=0 --with-pic=1 --download-metis --with-cxx-dialect=C++11 MAKEFLAGS=$MAKEFLAGS COPTFLAGS=${PETSC_OPT_FLAGS} CXXOPTFLAGS=${PETSC_OPT_FLAGS} --with-mpiexec=${PETSC_MPIEXEC} --with-debugging=${PETSC_DEBUGGING} ${PETSC_64_BIT_INDEX_FLAG}<br><br>        BUILD_COMMAND<br>        make -j<br>        PETSC_DIR=${CMAKE_BINARY_DIR}/external/petsc/<br>        PETSC_ARCH=${PETSC_ARCH_FLAG}<br><br>        INSTALL_COMMAND ""<br>)</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jul 25, 2022 at 11:59 AM Satish Balay via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Sorry - don't know how to help with cmake.<br>
<br>
does 'make check' work for this static build of PETSc? Also can you 'rm -rf PETSC_ARCH' [and rebuild PETSc] - to make sure the static build is clean - before you attempt your build?<br>
<br>
Also is this cmake build for your application - or a different package?<br>
<br>
It appears to be using an old version of FindPETSc.cmake - you might need a newer version - that uses pkg-config [but don't know the details]<br>
<br>
cc: Jed<br>
<br>
Satish<br>
<br>
On Mon, 25 Jul 2022, Sebastian Gutierrez wrote:<br>
<br>
> Hello Satish,<br>
> <br>
> First of all, I want to thank you for your response. I have been trying to<br>
> perform the second alternative you suggested, but I am having problem while<br>
> I am executing the cmake command. Could you help me with it? I got this<br>
> error in the image attached, additionally I config petsc with this<br>
> configuration: *./configure --with-cc=gcc --with-cxx=g++ --with-fc=gfortran<br>
> --with-debugging=0 COPTFLAGS='-O3 -march=native -mtune=native'<br>
> CXXOPTFLAGS='-O3 -march=native -mtune=native' FOPTFLAGS='-O3 -march=native<br>
> -mtune=native' --with-shared-libraries=0 --download-mpich*<br>
> And this cmake command: *cmake -DPETSC_DIR=/usr/lib/petsc-3.17.2<br>
> -DPETSC_ARCH=arch-linux-c-opt all -DPETSC_CURRENT=ON ../*<br>
> <br>
> I hope you can help me, please.<br>
> <br>
> Best regards,<br>
> <br>
> Sebastian<br>
> <br>
> [image: imagen.png]<br>
> <br>
> <br>
> El jue, 21 jul 2022 a las 15:41, Satish Balay (<<a href="mailto:balay@mcs.anl.gov" target="_blank">balay@mcs.anl.gov</a>>)<br>
> escribió:<br>
> <br>
> > Another alternative: you can install PETSc with:<br>
> ><br>
> > --with-shared-libraries=0<br>
> ><br>
> > [but some of the dependent libraries might still be shared - if so -<br>
> > you'll need to figure out static build for them. If they are installed with<br>
> > --download-pkg option of configure - likely it will be static]<br>
> ><br>
> > Satish<br>
> ><br>
> > On Thu, 21 Jul 2022, Satish Balay via petsc-users wrote:<br>
> ><br>
> > > You can try:<br>
> > ><br>
> > > ldd your-executable<br>
> > ><br>
> > > And copy over all the .so files listed by it [ignoring the system<br>
> > libraries - that might be present on the remote machine<br>
> > ><br>
> > ><br>
> > > Try setting LD_LIBRARY_PATH to this location [n the new machine]<br>
> > ><br>
> > > and retry 'ldd your-executable' on the new machine - and make sure there<br>
> > are no 'not found' libraries in that list<br>
> > ><br>
> > > then your-executable is likely to work.<br>
> > ><br>
> > > Note: this might not work parallely - as you would need mpiexec for a<br>
> > parallel run<br>
> > ><br>
> > > Satish<br>
> > ><br>
> > > On Thu, 21 Jul 2022, Sebastian Gutierrez wrote:<br>
> > ><br>
> > > ><br>
> > > ><br>
> > > ><br>
> > > > Good afternoon PETSc Development Team,<br>
> > > ><br>
> > > ><br>
> > > ><br>
> > > > I have been trying to distribute your program as third party library<br>
> > in my CMake Project. Because I do not want to my Linux users to have to<br>
> > install petsc by their own. I just want them to use my final<br>
> > > > product that uses petsc dependencies. When I execute make install  of<br>
> > my Project in my own machine, it works perfectly but the problem appears<br>
> > when I move the executable to another machine that does not have<br>
> > > > installed petsc.<br>
> > > ><br>
> > > ><br>
> > > ><br>
> > > > I honestly have no idea to solve this. I wrote this email in hopes<br>
> > that you kindly help me out with this.<br>
> > > ><br>
> > > > I am looking forward to your answer.<br>
> > > ><br>
> > > ><br>
> > > ><br>
> > > > Best regards,<br>
> > > ><br>
> > > ><br>
> > > ><br>
> > > > Sebastian Gutierrez<br>
> > > ><br>
> > > ><br>
> > > ><br>
> > ><br>
> ><br>
> </blockquote></div>