[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 10:34:19 CST 2021
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:
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.
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?]
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