Fande, Please add in config/BuildSystem/config/framework.py line 528 two new lines
# pgi dumps filename on stderr - but returns 0 errorcode' lines = [s for s in lines if lines != 'conftest.c:'] # in case -pie is always being passed to linker lines = [s for s in lines if s.find('-pie being ignored. It is only used when linking a main executable') < 0] Barry You have (another of Conda's "take over the world my way" approach) LDFLAGS_LD=-pie -headerpad_max_install_names -dead_strip_dylibs -rpath /Users/kongf/miniconda3/envs/testpetsc/lib -L/Users/kongf/miniconda3/envs/testpetsc/lib Executing: mpicc -o /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers/conftest -dynamiclib -single_module /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers/conftest.o Possible ERROR while running linker: stderr: ld: warning: -pie being ignored. It is only used when linking a main executable Rejecting C linker flag -dynamiclib -single_module due to ld: warning: -pie being ignored. It is only used when linking a main executable This is the correct link command for the Mac but it is being rejected due to the warning message. > On Mar 10, 2021, at 10:11 AM, Fande Kong <fdkong...@gmail.com> 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? > > 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 <bsm...@petsc.dev > <mailto:bsm...@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 <knep...@gmail.com >> <mailto:knep...@gmail.com>> wrote: >> >> On Mon, Mar 8, 2021 at 8:23 PM Fande Kong <fdkong...@gmail.com >> <mailto:fdkong...@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 <knep...@gmail.com >> <mailto:knep...@gmail.com>> wrote: >> On Mon, Mar 8, 2021 at 7:55 PM Fande Kong <fdkong...@gmail.com >> <mailto:fdkong...@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/> > > <configure.log>