NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.

[udunits] [UDUNITS #KIA-819973]: Build and run problem on ubuntu 13.10 32bits

Chris,

What is the value of the MATH_LIBRARY variable in the file "CMakeCache.txt", 
which should be in the top-level build-directory?

> My point is: The latest udunits doesn't build on ubuntu:
> 
> $ rm -Rf build && mkdir build && cd build
> $ cmake ..
> $ make
> Scanning dependencies of target udunits2_doc
> [  5%] Built target udunits2_doc
> Scanning dependencies of target libudunits2
> [ 10%] Building C object lib/CMakeFiles/libudunits2.dir/converter.c.o
> [ 15%] Building C object lib/CMakeFiles/libudunits2.dir/error.c.o
> [ 21%] Building C object lib/CMakeFiles/libudunits2.dir/formatter.c.o
> [ 26%] Building C object lib/CMakeFiles/libudunits2.dir/idToUnitMap.c.o
> [ 31%] Building C object lib/CMakeFiles/libudunits2.dir/parser.c.o
> [ 36%] Building C object lib/CMakeFiles/libudunits2.dir/prefix.c.o
> [ 42%] Building C object lib/CMakeFiles/libudunits2.dir/status.c.o
> [ 47%] Building C object lib/CMakeFiles/libudunits2.dir/systemMap.c.o
> [ 52%] Building C object lib/CMakeFiles/libudunits2.dir/unitAndId.c.o
> [ 57%] Building C object lib/CMakeFiles/libudunits2.dir/unitcore.c.o
> [ 63%] Building C object lib/CMakeFiles/libudunits2.dir/unitToIdMap.c.o
> [ 68%] Building C object lib/CMakeFiles/libudunits2.dir/ut_free_system.c.o
> [ 73%] Building C object lib/CMakeFiles/libudunits2.dir/xml.c.o
> Linking C shared library libudunits2.so
> [ 84%] Built target libudunits2
> Scanning dependencies of target udunits2lib_doc
> [ 89%] Built target udunits2lib_doc
> Scanning dependencies of target udunits2
> [ 94%] Building C object prog/CMakeFiles/udunits2.dir/udunits2.c.o
> Linking C executable udunits2
> ../lib/libudunits2.so: undefined reference to `fmod'
> ../lib/libudunits2.so: undefined reference to `exp'
> ../lib/libudunits2.so: undefined reference to `log'
> ../lib/libudunits2.so: undefined reference to `pow'
> ../lib/libudunits2.so: undefined reference to `log10'
> ../lib/libudunits2.so: undefined reference to `floor'
> collect2: error: ld returned 1 exit status
> make[2]: *** [prog/udunits2] Error 1
> make[1]: *** [prog/CMakeFiles/udunits2.dir/all] Error 2
> make: *** [all] Error 2
> 
> The only way to fix it is to tell gcc that libudunits depends on libm
> while generating the .so:
> 
> Original command:
> /usr/bin/cc  -fPIC    -shared -Wl,-soname,libudunits2.so -o
> libudunits2.so [...] -lexpat
> Fixed command:
> /usr/bin/cc  -fPIC    -shared -Wl,-soname,libudunits2.so -o
> libudunits2.so [...] -lexpat -lm
> 
> After the fix:
> $ make
> [  5%] Built target udunits2_doc
> [ 84%] Built target libudunits2
> [ 89%] Built target udunits2lib_doc
> Linking C executable udunits2
> [ 94%] Built target udunits2
> Scanning dependencies of target udunits2prog_doc
> [100%] Built target udunits2prog_doc
> 
> > The sense of the "res == 0" test in the above is inverted: the
> > function returns false (i.e., 0) if and only if numeric values are not
> > convertible between the two units.
> 
> My bad! Actually the documentation is clear enough on that point.
> 
> > You should use ut_free(ut_unit*) and ut_free_system(ut_unit_system*)
> > in the above instead of free(). The documentation needs to be improved
> > in the area. I'll get on that.
> 
> My bad again, I think the documentation is clear enough.
> 
> > The above warnings are expected for the reasons given. You can disable them.
> 
> Good, I think i will eventually customise my unit definitions.

Regards,
Steve Emmerson

Ticket Details
===================
Ticket ID: KIA-819973
Department: Support UDUNITS
Priority: Normal
Status: Closed



  • 2014 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the udunits archives: