[petsc-users] Exhausted all shared linker guesses. Could not determine how to create a shared library!

Satish Balay balay at mcs.anl.gov
Wed Mar 10 12:34:14 CST 2021


On Wed, 10 Mar 2021, Fande Kong wrote:

> On Wed, Mar 10, 2021 at 9:34 AM Satish Balay <balay at mcs.anl.gov> wrote:
> 
> > On Wed, 10 Mar 2021, Fande Kong wrote:
> >
> > > Thanks, Barry,
> > >
> > > It seems PETSc works fine with manually built compilers. We are pretty
> > much
> > > sure that the issue is related to conda. Conda might introduce extra
> > flags.
> > >
> > > We still need to make it work with conda because we deliver our package
> > via
> > > conda for users.
> > >
> > >
> > > I unset all flags from conda, and got slightly different results this
> > > time.  The log was attached. Anyone could  explain the motivation that we
> > > try to build executable without a main function?
> >
> > Its attempting to build a shared library - which shouldn't have a main.
> >
> > However - the primary issue is:
> >
> > >>>>>
> > Executing: mpicc  -o
> > /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers/conftest
> >
> > /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers/conftest.o
> > -L/var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers
> > -lconftest
> > Possible ERROR while running linker: exit code 1
> > stderr:
> > ld: can't link with a main executable file
> > '/var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers/libconftest.dylib'
> > for architecture x86_64
> > clang-11: error: linker command failed with exit code 1 (use -v to see
> > invocation)
> > <<<
> >
> > Here its built a .dylib - and attempting to use it. But the compiler gives
> > the above error.
> >
> > Can you build with conda compilers - but outside conda env? It appears to
> > have:
> >
> 
> I am already outside of conda (build), but in order to use conda compilers,
> we need a few variables.

Can you send the configure.log for this build outside conda - but using conda tools.

And what do you get for:

/Users/kongf/miniconda3/envs/testpetsc/bin/mpicc -show
/Users/kongf/miniconda3/envs/testpetsc/bin/x86_64-apple-darwin13.4.0-clang -v src/benchmarks/sizeof.c

> >
> > AS=/Users/kongf/miniconda3/envs/testpetsc/bin/x86_64-apple-darwin13.4.0-as
> > AR=/Users/kongf/miniconda3/envs/testpetsc/bin/x86_64-apple-darwin13.4.0-ar
> >
> > CXX_FOR_BUILD=/Users/kongf/miniconda3/envs/testpetsc/bin/x86_64-apple-darwin13.4.0-clang++
> >
> > INSTALL_NAME_TOOL=/Users/kongf/miniconda3/envs/testpetsc/bin/x86_64-apple-darwin13.4.0-install_name_tool
> >
> > CC_FOR_BUILD=/Users/kongf/miniconda3/envs/testpetsc/bin/x86_64-apple-darwin13.4.0-clang
> > FC_FOR_BUILD=/Users/kongf/miniconda3/envs/testpetsc/bin/-gfortran
> > LD=/Users/kongf/miniconda3/envs/testpetsc/bin/x86_64-apple-darwin13.4.0-ld
> >
> > Don't know if any one of them is making a difference.
> >
> 
> I unset all these variables, and did not make a difference.
> 
> 
> >
> > Also you might want to comment out
> > "self.executeTest(self.resetEnvCompilers)" in setCompilers.py to see if its
> > making a difference [same with self.checkEnvCompilers?
> >
> 
> Still the same issue. Might it is just a bad compiler

Perhaps you can try to reproduce the above test outside configure [i.e create a .dylib, and attempt to link to it] - and attempt to debug it further.

If its a broken conda compiler [or conda-ld] perhaps there is a way to use compilers/ld from outside conda - from this conda build.

Satish

- 

> 
> 
> Thanks for your help
> 
> Fande,
> 
> 
> >
> >
> > Satish
> >
> >
> > >
> > > Thanks,
> > >
> > > Fande
> > >
> > > Executing: mpicc -c -o
> > >
> > /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers/conftest.o
> > >
> > -I/var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers
> > >  -fPIC
> > >
> > /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers/conftest.c
> > >
> > > Successful compile:
> > > Source:
> > > #include "confdefs.h"
> > > #include "conffix.h"
> > > #include <stdio.h>
> > > int (*fprintf_ptr)(FILE*,const char*,...) = fprintf;
> > > void  foo(void){
> > >   fprintf_ptr(stdout,"hello");
> > >   return;
> > > }
> > > void bar(void){foo();}
> > > Running Executable WITHOUT threads to time it out
> > > Executing: mpicc  -o
> > >
> > /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers/libconftest.so
> > >  -dynamic  -fPIC
> > >
> > /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers/conftest.o
> > >
> > > Possible ERROR while running linker: exit code 1
> > > stderr:
> > > Undefined symbols for architecture x86_64:
> > >   "_main", referenced from:
> > >      implicit entry/start for main executable
> > > ld: symbol(s) not found for architecture x86_64
> > > clang-11: error: linker command failed with exit code 1 (use -v to see
> > > invocation)
> > >           Rejected C compiler flag -fPIC because it was not compatible
> > with
> > > shared linker mpicc using flags ['-dynamic']
> > >
> > >
> > > On Mon, Mar 8, 2021 at 7:28 PM Barry Smith <bsmith at petsc.dev> wrote:
> > >
> > > >
> > > >   Fande,
> > > >
> > > >      I see you are using CONDA, this can cause issues since it sticks
> > all
> > > > kinds of things into the environment. PETSc tries to remove some of
> > them
> > > > but perhaps not enough. If you run printenv you will see all the mess
> > it is
> > > > dumping in.
> > > >
> > > >     Can you trying the same build without CONDA environment?
> > > >
> > > >   Barry
> > > >
> > > >
> > > > On Mar 8, 2021, at 7:31 PM, Matthew Knepley <knepley at gmail.com> wrote:
> > > >
> > > > On Mon, Mar 8, 2021 at 8:23 PM Fande Kong <fdkong.jd at gmail.com> wrote:
> > > >
> > > >> Thanks Matthew,
> > > >>
> > > >> Hmm, we still have the same issue after shutting off all unknown
> > flags.
> > > >>
> > > >
> > > > Oh, I was misinterpreting the error message:
> > > >
> > > >   ld: can't link with a main executable file
> > > >
> > '/var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-6v1w4q4u/config.setCompilers/libconftest.dylib'
> > > >
> > > > So clang did not _actually_ make a shared library, it made an
> > executable.
> > > > Did clang-11 change the options it uses to build a shared library?
> > > >
> > > > Satish, do we test with clang-11?
> > > >
> > > >   Thanks,
> > > >
> > > >       Matt
> > > >
> > > > Thanks,
> > > >>
> > > >> Fande
> > > >>
> > > >> On Mon, Mar 8, 2021 at 6:07 PM Matthew Knepley <knepley at gmail.com>
> > wrote:
> > > >>
> > > >>> On Mon, Mar 8, 2021 at 7:55 PM Fande Kong <fdkong.jd at gmail.com>
> > wrote:
> > > >>>
> > > >>>> Hi All,
> > > >>>>
> > > >>>> mpicc rejected "-fPIC". Anyone has a clue how to work around this
> > issue?
> > > >>>>
> > > >>>
> > > >>> The failure is at the last step
> > > >>>
> > > >>> Executing: mpicc  -o
> > > >>>
> > /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-6v1w4q4u/config.setCompilers/conftest
> > > >>>   -fPIC
> > > >>>
> > /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-6v1w4q4u/config.setCompilers/conftest.o
> > > >>>
> > -L/var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-6v1w4q4u/config.setCompilers
> > > >>> -lconftest
> > > >>> Possible ERROR while running linker: exit code 1
> > > >>> stderr:
> > > >>> ld: can't link with a main executable file
> > > >>>
> > '/var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-6v1w4q4u/config.setCompilers/libconftest.dylib'
> > > >>> for architecture x86_64
> > > >>> clang-11: error: linker command failed with exit code 1 (use -v to
> > see
> > > >>> invocation)
> > > >>>
> > > >>> but you have some flags stuck in which may or may not affect this. I
> > > >>> would try shutting them off:
> > > >>>
> > > >>> LDFLAGS_LD=-pie -headerpad_max_install_names -dead_strip_dylibs
> > -rpath
> > > >>> /Users/kongf/miniconda3/envs/moose/lib
> > > >>> -L/Users/kongf/miniconda3/envs/moose/lib
> > > >>>
> > > >>> I cannot tell exactly why clang is failing because it does not
> > report a
> > > >>> specific error.
> > > >>>
> > > >>>   Thanks,
> > > >>>
> > > >>>      Matt
> > > >>>
> > > >>> The log was attached.
> > > >>>>
> > > >>>> Thanks so much,
> > > >>>>
> > > >>>> Fande
> > > >>>>
> > > >>>
> > > >>>
> > > >>> --
> > > >>> What most experimenters take for granted before they begin their
> > > >>> experiments is infinitely more interesting than any results to which
> > their
> > > >>> experiments lead.
> > > >>> -- Norbert Wiener
> > > >>>
> > > >>> https://www.cse.buffalo.edu/~knepley/
> > > >>> <http://www.cse.buffalo.edu/~knepley/>
> > > >>>
> > > >>
> > > >
> > > > --
> > > > What most experimenters take for granted before they begin their
> > > > experiments is infinitely more interesting than any results to which
> > their
> > > > experiments lead.
> > > > -- Norbert Wiener
> > > >
> > > > https://www.cse.buffalo.edu/~knepley/
> > > > <http://www.cse.buffalo.edu/~knepley/>
> > > >
> > > >
> > > >
> > >
> >
> >
> 



More information about the petsc-users mailing list