Compiling Boost 1.55.0 with Intel 14.0.1 and libstdc++ from GCC 4.8.1
Hi, I am attempting to build Boost 1.55.0 with Intel compiler 14.0.1, using the Standard C++ Library provided by GCC 4.8.1 I am having a lot of errors with "fenv". Here is a subset of those errors, with one particular object that is being built by the build script. The offending command line is "icpc" -c -xc++ -w1 -inline-level=2 -O3 -ip -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_DATE_TIME_DYN_LINK=1 -DBOOST_FILESYSTEM_DYN_LINK=1 -DBOOST_LOG_BUILDING_THE_LIB=1 -DBOOST_LOG_DLL -DBOOST_LOG_NO_THREADS -DBOOST_LOG_USE_AVX2 -DBOOST_LOG_USE_NATIVE_SYSLOG -DBOOST_LOG_USE_SSSE3 -DBOOST_LOG_WITHOUT_EVENT_LOG -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DBOOST_SYSTEM_DYN_LINK=1 -DBOOST_THREAD_DONT_USE_CHRONO=1 -DDATE_TIME_INLINE -DNDEBUG -I"." -c -o "bin.v2/libs/log/build/intel-linux/release/log-api-unix/named_scope_format_parser.o" "libs/log/src/named_scope_format_parser.cpp" Errors are such as : In file included from ./boost/math/tools/promotion.hpp(26), from ./boost/math/special_functions/detail/round_fwd.hpp(12), from ./boost/math/special_functions/math_fwd.hpp(26), from ./boost/math/special_functions/fpclassify.hpp(19), from ./boost/spirit/home/support/detail/sign.hpp(22), from ./boost/spirit/home/karma/numeric/detail/numeric_utils.hpp(22), from ./boost/spirit/home/karma/numeric/uint.hpp(33), from ./boost/spirit/include/karma_uint.hpp(16), from libs/log/src/named_scope_format_parser.cpp(22): ./boost/math/tools/config.hpp(309): error: identifier "fexcept_t" is undefined fexcept_t m_flags; ^ In file included from ./boost/math/tools/promotion.hpp(26), from ./boost/math/special_functions/detail/round_fwd.hpp(12), from ./boost/math/special_functions/math_fwd.hpp(26), from ./boost/math/special_functions/fpclassify.hpp(19), from ./boost/spirit/home/support/detail/sign.hpp(22), from ./boost/spirit/home/karma/numeric/detail/numeric_utils.hpp(22), from ./boost/spirit/home/karma/numeric/uint.hpp(33), from ./boost/spirit/include/karma_uint.hpp(16), from libs/log/src/named_scope_format_parser.cpp(22): ./boost/math/tools/config.hpp(301): error: identifier "FE_INVALID" is undefined fegetexceptflag(&m_flags, FE_ALL_EXCEPT); I have the following set export CPLUS_INCLUDE_PATH=/software6/compilers/gcc/4.8.1/include/c++/4.8.1/ if I unset CPLUS_INCLUDE_PATH, this specific object compiles fine (with warnings, but no error). Does anyone have an idea of weither this is a bug with Intel compiler or with Boost ? Best regards, -- --------------------------------- Maxime Boissonneault Analyste de calcul - Calcul Québec, Université Laval Ph. D. en physique
This : #####Without CPLUS_INCLUDE_PATH [mboisson@r103-n2 tmp]$ icpc test_fenv.cpp -c -o a.o [mboisson@r103-n2 tmp]$ env | grep CPLUS #####With CPLUS_INCLUDE_PATH pointing to the gnu std libc++ [mboisson@r103-n2 tmp]$ export CPLUS_INCLUDE_PATH=/software6/compilers/gcc/4.8.1/include/c++/4.8.1/ [mboisson@r103-n2 tmp]$ icpc test_fenv.cpp -c -o a.o test_fenv.cpp(3): error: identifier "fexcept_t" is undefined fexcept_t data; ^ compilation aborted for test_fenv.cpp (code 2) -- --------------------------------- Maxime Boissonneault Analyste de calcul - Calcul Québec, Université Laval Ph. D. en physique
And this : [mboisson@r103-n2 tmp]$ icpc -std=c++11 test_fenv.cpp -c -o a.o In file included from test_fenv.cpp(1): /software6/compilers/gcc/4.8.1/include/c++/4.8.1/fenv.h(58): error: the global scope has no "fenv_t" using ::fenv_t; ^ In file included from test_fenv.cpp(1): /software6/compilers/gcc/4.8.1/include/c++/4.8.1/fenv.h(59): error: the global scope has no "fexcept_t" using ::fexcept_t; ^ In file included from test_fenv.cpp(1): /software6/compilers/gcc/4.8.1/include/c++/4.8.1/fenv.h(62): error: the global scope has no "feclearexcept" using ::feclearexcept; ^ In file included from test_fenv.cpp(1): /software6/compilers/gcc/4.8.1/include/c++/4.8.1/fenv.h(63): error: the global scope has no "fegetexceptflag" using ::fegetexceptflag; ^ In file included from test_fenv.cpp(1): /software6/compilers/gcc/4.8.1/include/c++/4.8.1/fenv.h(64): error: the global scope has no "feraiseexcept" using ::feraiseexcept; ^ In file included from test_fenv.cpp(1): /software6/compilers/gcc/4.8.1/include/c++/4.8.1/fenv.h(65): error: the global scope has no "fesetexceptflag" using ::fesetexceptflag; ^ In file included from test_fenv.cpp(1): /software6/compilers/gcc/4.8.1/include/c++/4.8.1/fenv.h(66): error: the global scope has no "fetestexcept" using ::fetestexcept; ^ In file included from test_fenv.cpp(1): /software6/compilers/gcc/4.8.1/include/c++/4.8.1/fenv.h(68): error: the global scope has no "fegetround" using ::fegetround; ^ In file included from test_fenv.cpp(1): /software6/compilers/gcc/4.8.1/include/c++/4.8.1/fenv.h(69): error: the global scope has no "fesetround" using ::fesetround; ^ In file included from test_fenv.cpp(1): /software6/compilers/gcc/4.8.1/include/c++/4.8.1/fenv.h(71): error: the global scope has no "fegetenv" using ::fegetenv; ^ In file included from test_fenv.cpp(1): /software6/compilers/gcc/4.8.1/include/c++/4.8.1/fenv.h(72): error: the global scope has no "feholdexcept" using ::feholdexcept; ^ In file included from test_fenv.cpp(1): /software6/compilers/gcc/4.8.1/include/c++/4.8.1/fenv.h(73): error: the global scope has no "fesetenv" using ::fesetenv; ^ In file included from test_fenv.cpp(1): /software6/compilers/gcc/4.8.1/include/c++/4.8.1/fenv.h(74): error: the global scope has no "feupdateenv" using ::feupdateenv; ^ test_fenv.cpp(3): error: identifier "fexcept_t" is undefined fexcept_t data; ^ compilation aborted for test_fenv.cpp (code 2) Maxime Le 2013-11-13 14:28, Maxime Boissonneault a écrit :
This :
#####Without CPLUS_INCLUDE_PATH [mboisson@r103-n2 tmp]$ icpc test_fenv.cpp -c -o a.o [mboisson@r103-n2 tmp]$ env | grep CPLUS #####With CPLUS_INCLUDE_PATH pointing to the gnu std libc++ [mboisson@r103-n2 tmp]$ export CPLUS_INCLUDE_PATH=/software6/compilers/gcc/4.8.1/include/c++/4.8.1/ [mboisson@r103-n2 tmp]$ icpc test_fenv.cpp -c -o a.o test_fenv.cpp(3): error: identifier "fexcept_t" is undefined fexcept_t data; ^
compilation aborted for test_fenv.cpp (code 2)
This : #####Without CPLUS_INCLUDE_PATH [mboisson@r103-n2 tmp]$ icpc test_fenv.cpp -c -o a.o [mboisson@r103-n2 tmp]$ env | grep CPLUS #####With CPLUS_INCLUDE_PATH pointing to the gnu std libc++ [mboisson@r103-n2 tmp]$ export CPLUS_INCLUDE_PATH=/software6/compilers/gcc/4.8.1/include/c++/4.8.1/ [mboisson@r103-n2 tmp]$ icpc test_fenv.cpp -c -o a.o test_fenv.cpp(3): error: identifier "fexcept_t" is undefined fexcept_t data; ^ Looks like Intel isn't compatible with that version of libstdc++ then? John.
Hi, It seems that icpc on our system is not searching /usr/include, and does not find the legacy "fenv.h" which is included in fenv.h in glibc++. By adding /usr/include at the end of our CPATH, it now compiles. Best regards, Maxime Le 2013-11-13 13:55, John Maddock a écrit :
This :
#####Without CPLUS_INCLUDE_PATH [mboisson@r103-n2 tmp]$ icpc test_fenv.cpp -c -o a.o [mboisson@r103-n2 tmp]$ env | grep CPLUS #####With CPLUS_INCLUDE_PATH pointing to the gnu std libc++ [mboisson@r103-n2 tmp]$ export CPLUS_INCLUDE_PATH=/software6/compilers/gcc/4.8.1/include/c++/4.8.1/ [mboisson@r103-n2 tmp]$ icpc test_fenv.cpp -c -o a.o test_fenv.cpp(3): error: identifier "fexcept_t" is undefined fexcept_t data; ^
Looks like Intel isn't compatible with that version of libstdc++ then?
John. _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
On 11/18/2013 4:12 PM, Maxime Boissonneault wrote:
Hi, It seems that icpc on our system is not searching /usr/include, and does not find the legacy "fenv.h" which is included in fenv.h in glibc++.
By adding /usr/include at the end of our CPATH, it now compiles.
Did you setup icpc correctly in your shell's startup file(s). There are instructions of how to do this after you install Intel C++.
Best regards,
Maxime
Le 2013-11-13 13:55, John Maddock a écrit :
This :
#####Without CPLUS_INCLUDE_PATH [mboisson@r103-n2 tmp]$ icpc test_fenv.cpp -c -o a.o [mboisson@r103-n2 tmp]$ env | grep CPLUS #####With CPLUS_INCLUDE_PATH pointing to the gnu std libc++ [mboisson@r103-n2 tmp]$ export CPLUS_INCLUDE_PATH=/software6/compilers/gcc/4.8.1/include/c++/4.8.1/ [mboisson@r103-n2 tmp]$ icpc test_fenv.cpp -c -o a.o test_fenv.cpp(3): error: identifier "fexcept_t" is undefined fexcept_t data; ^
Looks like Intel isn't compatible with that version of libstdc++ then?
John.
participants (3)
-
Edward Diener
-
John Maddock
-
Maxime Boissonneault