Link error when calling C code

From: Li Dong <dongli_at_nyahnyahspammersnyahnyah>
Date: Tue Oct 29 2013 - 02:19:17 MDT

Dear NCL team,

I have written a C code of EEMD method under Mac OS X 10.9. When I tried to call it from NCL, I followed the instruction of NCL website (http://www.ncl.ucar.edu/Document/Manuals/Ref_Manual/NclExtend.shtml#Example_6) by writing a wrapper. The codes I have now are:

    - eemd.c
    - eemd_ncl_wrapper.c

and I ran the following commands:

    $ nhlcc -c eemd_ncl_wrapper.c
gcc -DSYSV -D_XOPEN_SOURCE -DByteSwapped -D__UNIXOS2__ -DNeedFuncProto -ansi -fPIC -m64 -Wall -O -c eemd_ncl_wrapper.c -L<…>/ncl/6.1.2/lib -L/usr/X11R6/lib -I<…>/ncl/6.1.2/include -I/usr/X11R6/include -lhlu -lncarg -lncarg_gks -lncarg_c -lXpm -lX11 -lXext -lcairo -lfontconfig -lpixman-1 -lfreetype -lexpat -lpng -lz -lpthread -lbz2 -lXrender -lgfortran
clang: warning: -lhlu: 'linker' input unused
clang: warning: -lncarg: 'linker' input unused
clang: warning: -lncarg_gks: 'linker' input unused
clang: warning: -lncarg_c: 'linker' input unused
clang: warning: -lXpm: 'linker' input unused
clang: warning: -lX11: 'linker' input unused
clang: warning: -lXext: 'linker' input unused
clang: warning: -lcairo: 'linker' input unused
clang: warning: -lfontconfig: 'linker' input unused
clang: warning: -lpixman-1: 'linker' input unused
clang: warning: -lfreetype: 'linker' input unused
clang: warning: -lexpat: 'linker' input unused
clang: warning: -lpng: 'linker' input unused
clang: warning: -lz: 'linker' input unused
clang: warning: -lpthread: 'linker' input unused
clang: warning: -lbz2: 'linker' input unused
clang: warning: -lXrender: 'linker' input unused
clang: warning: -lgfortran: 'linker' input unused
clang: warning: argument unused during compilation: ‘-L<…>/ncl/6.1.2/lib'
clang: warning: argument unused during compilation: '-L/usr/X11R6/lib’

    $ nhlcc -c eemd.c
gcc -DSYSV -D_XOPEN_SOURCE -DByteSwapped -D__UNIXOS2__ -DNeedFuncProto -ansi -fPIC -m64 -Wall -O -c eemd.c -L<…>/ncl/6.1.2/lib -L/usr/X11R6/lib -I<…>/ncl/6.1.2/include -I/usr/X11R6/include -lhlu -lncarg -lncarg_gks -lncarg_c -lXpm -lX11 -lXext -lcairo -lfontconfig -lpixman-1 -lfreetype -lexpat -lpng -lz -lpthread -lbz2 -lXrender -lgfortran
clang: warning: -lhlu: 'linker' input unused
clang: warning: -lncarg: 'linker' input unused
clang: warning: -lncarg_gks: 'linker' input unused
clang: warning: -lncarg_c: 'linker' input unused
clang: warning: -lXpm: 'linker' input unused
clang: warning: -lX11: 'linker' input unused
clang: warning: -lXext: 'linker' input unused
clang: warning: -lcairo: 'linker' input unused
clang: warning: -lfontconfig: 'linker' input unused
clang: warning: -lpixman-1: 'linker' input unused
clang: warning: -lfreetype: 'linker' input unused
clang: warning: -lexpat: 'linker' input unused
clang: warning: -lpng: 'linker' input unused
clang: warning: -lz: 'linker' input unused
clang: warning: -lpthread: 'linker' input unused
clang: warning: -lbz2: 'linker' input unused
clang: warning: -lXrender: 'linker' input unused
clang: warning: -lgfortran: 'linker' input unused
clang: warning: argument unused during compilation: ‘-L<…>/ncl/6.1.2/lib'
clang: warning: argument unused during compilation: '-L/usr/X11R6/lib’

    $ ld -o eemd.so eemd_ncl_wrapper.o eemd.o
ld: warning: -macosx_version_min not specified, assuming 10.8
Undefined symbols for architecture x86_64:
  "_NclGetArgValue", referenced from:
      _eemd_ncl_wrapper in eemd_ncl_wrapper.o
  "_NclRegisterFunc", referenced from:
      _Init in eemd_ncl_wrapper.o
  "_NclReturnValue", referenced from:
      _eemd_ncl_wrapper in eemd_ncl_wrapper.o
  "_NewArgs", referenced from:
      _Init in eemd_ncl_wrapper.o
  "_NhlPError", referenced from:
      _eemd_ncl_wrapper in eemd_ncl_wrapper.o
  "_SetArgTemplate", referenced from:
      _Init in eemd_ncl_wrapper.o
  "___bzero", referenced from:
      _eemd in eemd.o
  "___stack_chk_fail", referenced from:
      _eemd_ncl_wrapper in eemd_ncl_wrapper.o
      _Init in eemd_ncl_wrapper.o
  "___stack_chk_guard", referenced from:
      _eemd_ncl_wrapper in eemd_ncl_wrapper.o
      _Init in eemd_ncl_wrapper.o
  "_c_ftcurv", referenced from:
      _emd in eemd.o
  "_c_ftsetr", referenced from:
      _emd in eemd.o
  "_exit", referenced from:
      _emd in eemd.o
  "_free", referenced from:
      _emd in eemd.o
      _eemd in eemd.o
  "_log", referenced from:
      _randn in eemd.o
  "_log2", referenced from:
      _eemd in eemd.o
  "_malloc", referenced from:
      _emd in eemd.o
      _eemd in eemd.o
  "_memcpy", referenced from:
      _emd in eemd.o
  "_printf", referenced from:
      _emd in eemd.o
  "_rand", referenced from:
      _randn in eemd.o
     (maybe you meant: _randn)
  "_srand", referenced from:
      _eemd in eemd.o
  "_time", referenced from:
      _eemd in eemd.o
  "start", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for inferred architecture x86_64

As you can see there are bunch of undefined symbols, so I added some libraries as:

    $ ld eemd_ncl_wrapper.o eemd.o -o eemd.so -lm -L<…>/ncl/6.1.2/lib -lngmath
ld: warning: -macosx_version_min not specified, assuming 10.8
Undefined symbols for architecture x86_64:
  "_NclGetArgValue", referenced from:
      _eemd_ncl_wrapper in eemd_ncl_wrapper.o
  "_NclRegisterFunc", referenced from:
      _Init in eemd_ncl_wrapper.o
  "_NclReturnValue", referenced from:
      _eemd_ncl_wrapper in eemd_ncl_wrapper.o
  "_NewArgs", referenced from:
      _Init in eemd_ncl_wrapper.o
  "_NhlPError", referenced from:
      _eemd_ncl_wrapper in eemd_ncl_wrapper.o
  "_SetArgTemplate", referenced from:
      _Init in eemd_ncl_wrapper.o
  "start", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for inferred architecture x86_64

and more libraries, but more and more undefined symbols are reported, some of them are:

    “_nctypelen”, “_sd_ncvarinq”, “_seekgb”, “start”

What can I do with these errors? Thank you in advance!

Best regards,

Li

_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Tue Oct 29 02:19:38 2013

This archive was generated by hypermail 2.1.8 : Fri Nov 01 2013 - 08:58:14 MDT