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>

Reply via email to