[Paraview] Intel Compiler errors out with libXML2 [PV310]
Mike Jackson
imikejackson at gmail.com
Mon Jul 30 10:06:53 EDT 2007
On Jul 26, 2007, at 3:13 PM, clinton at elemtech.com wrote:
> On Tuesday 24 July 2007 3:15:49 pm Mike Jackson wrote:
>> I am trying to build ParaView 3-1-0 using the Intel Compiler (Vers
>> 9.x) on OS X (intel) 10.4.10. During linking I get the following
>> error:
>>
>> Linking C shared library ../../../bin/libvtklibxml2.dylib
>> xilibtool: executing 'libtool'
>> ld: Undefined symbols:
>> ___signbit
>> libtool: internal link edit command failed
>> make[2]: *** [bin/libvtklibxml2.pv3.1.dylib] Error 1
>> make[1]: *** [VTK/Utilities/vtklibxml2/CMakeFiles/vtklibxml2.dir/
>> all] Error
>> 2 make: *** [all] Error 2
>>
>> This otherwise compiles fine with the gcc included with OS X. Out of
>> curiosity I downloaded LibXML2 version 2..6.27 (of which the ParaView
>> version is based off) and successfully compiled and tested it using
>> the Intel Compiler.
>>
>> I am now guess that something went wrong when the LibXML2 sources
>> were
>> changed to work with CMake/VTK/ParaView.
>>
>> Anyone have any idea? I grepped the sources for "signbit" and the
>> only
>> close matches were in the "trio" sources, which are NOT compiled by
>> default. I did find one reference to "signbit" in the compiled object
>> file xpath.o. I looked through some of the sources of xpath.c/h and
>> some of those includes but nothing obvious popped out at me.
>
> xpath.c includes "trionan.c", which in turn includes triodef.h and
> trionan.h
> That's how xpath.o gets it.
>
> So when you use diff, what changes were made to the code when put
> into VTK?
> vtk_README.txt indicates some things were changed in the trio*.h
> files, but
> doesn't say what.
>
> Clint
>
>
Just to follow up with this.. evidently 'signbit(...)' is implemented
as an actual function in the 'imf' library that intel includes with
their compiler where as in GCC it is implemented as a macro.
Supposedly icc/icpc should be automatically linking against libimf
but for some reason is not, at least not on my system. There is also
a preprocessor constant '__PURE_SYS_C99_HEADERS__' that if defined
will NOT use the intel supplied definitions and instead use the gcc
definitions. By setting this I can get the xpath.c to compile.. and
probably link at that point.
I have submitted a request to intel to explain what I might be
doing wrong so hopefully this can get worked out. For now I am going
to just define __PURE_SYS_C99_HEADERS__ and see if I can get the rest
of ParaView 3.1.0 to compile using icc/icpc.
--
Mike Jackson Senior Research Engineer
Innovative Management & Technology Services
More information about the ParaView
mailing list