[petsc-dev] ARG_MAX and linking

Pierre Jolivet pierre.jolivet at enseeiht.fr
Tue Feb 6 16:04:51 CST 2018


I tried to comment out the lines you pointed out, but the builds error out.
Was I supposed to do something else?

> On 6 Feb 2018, at 3:47 PM, Jed Brown <jed at jedbrown.org> wrote:
> 
> If it's a __declspec(dllexport) issue, it's probably just not being
> handled correctly in petscsys.h.  Actually, it could be this junk which
> much be obsolete because we don't use CMake to build PETSc and also
> don't define petsc_EXPORTS.
> 
> include/petscsys.h-#if defined(petsc_EXPORTS)      /* CMake defines this when building the shared library */
> include/petscsys.h:#  define PETSC_VISIBILITY_PUBLIC PETSC_DLLEXPORT
> include/petscsys.h-#else  /* Win32 users need this to import symbols from petsc.dll */                                                                                                        
> include/petscsys.h-#  define PETSC_VISIBILITY_PUBLIC PETSC_DLLIMPORT                                                                                                                          
> include/petscsys.h-#endif                                                            
> 
> Pierre Jolivet <pierre.jolivet at enseeiht.fr> writes:
> 
>> I’m on master.
>> Thanks, I think this is the way to go, though I’m now seeing a lot of undefined references, like there http://mingw-users.1079350.n2.nabble.com/imp-prefixes-when-linking-td7386007.html <http://mingw-users.1079350.n2.nabble.com/imp-prefixes-when-linking-td7386007.html>
>> 
>>> On 6 Feb 2018, at 2:05 PM, Jed Brown <jed at jedbrown.org> wrote:
>>> 
>>> What branch are you on?  I wonder if this is exacerbated by Scott's
>>> "absolute path".  You can configure --with-single-library=0 which will
>>> link a separate libpetscsys, libpetscvec, etc.
>>> 
>>> There are Cygwin recipes in gmakefile that create argument files that
>>> the linker reads as @args.  We could use $(file > args, $^) to write
>>> them with arbitrarily long command lines.
>>> 
>>> Pierre Jolivet <pierre.jolivet at enseeiht.fr> writes:
>>> 
>>>> Hello,
>>>> I’m trying to compile PETSc with msys2 and MS MPI.
>>>> Everything works out almost flawlessly, except when linking. Indeed, you generate a nice line of 
>>>> $ wc /tmp/cl
>>>>   2  1234 69041 /tmp/cl
>>>> 69041 characters, but 
>>>> $ getconf.exe ARG_MAX
>>>> 32000
>>>> 
>>>> Thus, sadly, the make fails with the following error
>>>> /usr/bin/sh: /mingw64/bin/gcc: Argument list too long
>>>> 
>>>> Do you know of a work around? Anyway to link the full library as multiple smaller libraries (I think you did that for some version X.Y with X << 3, didn’t you?)?
>>>> 
>>>> Thanks,
>>>> Pierre



More information about the petsc-dev mailing list