PnetCDF question?

Wei-keng Liao wkliao at eecs.northwestern.edu
Wed Mar 2 18:09:31 CST 2016


Hi, Yao

Please try setting CFLAGS when rebuilding PnetCDF, i.e.
export CFLAGS="-fPIC"

Check the time stamp of libpnetcdf.a under /usr/local/lib
to make sure that is the one you built and installed.


Wei-keng

On Mar 2, 2016, at 4:59 PM, Hu, Yao wrote:

> Hi Rob,
> 
> Thank you for your clarification. 
> 
> Sorry, I don't understand when you say
> 
> "But, with -fPIC you have now provided enough additional information for
> your linker to hook everything together. "
> 
> How I can info ESMF the path to libpnetcdf.a dynamically?
> 
> Here, I set tags in ESMF makefile (http://www.earthsystemmodeling.org/esmf_releases/public/last/ESMF_usrdoc/node9.html)
> 
> ESMF_PNETCDF:           standard
> ESMF_PNETCDF_INCLUDE:   /usr/local/include    
> ESMF_PNETCDF_LIBS:      -lpnetcdf
> ESMF_PNETCDF_LIBPATH:   /usr/local/lib            (# the directory for the libpnetcdf.a)
> 
> After run make, I then get the same error:
> 
> /usr/bin/ld: /usr/local/lib/libpnetcdf.a(strerrorf.o): relocation R_X86_64_PC32 against undefined symbol `__stack_chk_fail@@GLIBC_2.4' can not be used when making a shared object; recompile with -fPIC
> /usr/bin/ld: final link failed: Bad value
> 
> Sorry, I am quite new to Linux.
> 
> Thanks,
> Yao
> 
> 
> Yao Hu, PhD
> Postdoctoral Researcher
> National Center for Supercomputing Applications
> 1205 W Clark St.
> Urbana, IL, USA 61801
> 
> ________________________________________
> From: Latham, Robert J. [robl at mcs.anl.gov]
> Sent: Wednesday, March 02, 2016 4:20 PM
> To: Hu, Yao
> Cc: parallel-netcdf at mcs.anl.gov
> Subject: Re: PnetCDF question?
> 
> On Wed, 2016-03-02 at 22:04 +0000, Hu, Yao wrote:
> 
>> I understand the libpnetcdf.a is a static library and cannot be dynamically linked with. I thus tried to add the flag:
>> 
> 
> Let me clarify slightly: the static library can be part of a shared
> library build.  It's just that the pnetcdf parts will be statically
> linked.  Look at the pnetcdf utilities:
> 
> % ldd ~/work/soft/pnetcdf/bin/ncmpigen
>        linux-vdso.so.1 =>  (0x00007ffc231ee000)
>        libmpi.so.0 => /home/robl/work/soft/mpich-clang/lib/libmpi.so.0
> (0x00007f4e581aa000)
>        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4e57de5000)
>        libpmpi.so.0 => /home/robl/work/soft/mpich-clang/lib/libpmpi.so.0
> (0x00007f4e577d9000)
>        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f4e575d1000)
>        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
> (0x00007f4e573b3000)
>        /lib64/ld-linux-x86-64.so.2 (0x00007f4e5854c000)
> 
> 
> They use both shared and static libraries.
> 
>> export CXXFLAGS="$CXXFLAGS -fPIC"
>> 
>> before I configure parallel netcdf. Unfortunately, it still generates the static (.a) library. Could you please let me know how to generate the dynamically linked library (.os)? or other suggestions? Thanks in advance.
>> 
> 
> Yep, you'll get a (slightly larger) libpnetcdf.a with the -fPIC flag.
> But, with -fPIC you have now provided enough additional information for
> your linker to hook everything together.
> 
> ==rob
> 
>> Sincerely,
>> Yao
>> 
>> Yao Hu, PhD
>> Postdoctoral Researcher
>> National Center for Supercomputing Applications
>> 1205 W Clark St.
>> Urbana, IL, USA 61801
> 
> 



More information about the parallel-netcdf mailing list