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

Barry Smith bsmith at petsc.dev
Wed Mar 10 13:05:47 CST 2021


 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.jd at 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 <bsmith at petsc.dev <mailto: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 <mailto:knepley at gmail.com>> wrote:
>> 
>> On Mon, Mar 8, 2021 at 8:23 PM Fande Kong <fdkong.jd at gmail.com <mailto: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 <mailto:knepley at gmail.com>> wrote:
>> On Mon, Mar 8, 2021 at 7:55 PM Fande Kong <fdkong.jd at gmail.com <mailto: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/>
> 
> <configure.log>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20210310/f7116f66/attachment-0001.html>


More information about the petsc-users mailing list