Software Archive
Read-only legacy content
17060 Discussions

icc math.h file not being found

newport_j
Beginner
1,389 Views

Iam having trouble with the icc math.h file and compiling with icc. It seems not to be able to find the math.h file and creates errors as shown.

I used the command


./test1.sh 1> out.txt 2> err46.txt.


I also used the -H compiler command and it seems to be pulling the math.h file in, but stillI am getting errors as shown in err46.txt.

At one point I actually put the Intel icc version of math.h in the same directory as test3.c and it still did not find it.

I need help on this one. Why can it not find my math.h file.

Again, this works perfectly under gcc, but creates the error output file err46.txt when I put in icc in place of gcc.

Any help appreciated. Thanks in advance.

Newport_j
0 Kudos
12 Replies
Brandon_H_Intel
Employee
1,389 Views

Hi newport_j,

I see errors like the following:

test3.c(6): error: identifier "ENV_DEF" is undefined

void WEGprint( ENV_DEF *env, EIGEN_RAY *ray ){

^

test3.c(6): error: identifier "EIGEN_RAY" is undefined

void WEGprint( ENV_DEF *env, EIGEN_RAY *ray ){

^

Your source file has the following includes:

#include

#include

#include "math-complex.h"



I'm guessing that these #defines must be coming from math-complex.h (I don't think these are standard predefined macros). Can you attach that?
0 Kudos
SergeyKostrov
Valued Contributor II
1,389 Views
I absolutely agree with Brandon that thisis not related to 'math.h' header file and a missing'math-complex.h' header
file isthe root cause of the compilation errors.

Best regards,
Sergey
0 Kudos
newport_j
Beginner
1,389 Views


Okay, here my modified source. Please place envstructdefs.h in the same directory as test4.c, likewise for test1.sh.

Run the command

./test1.sh 1> out.txt 2>err64.txt

you should get what I have in err63.txt. The only error will be in expected an expression.

Any help appreciated. Thanks in advance.

Newport_j




0 Kudos
Brandon_H_Intel
Employee
1,389 Views
No, I get:

blhewitt@orcslx112:~/quad/u103271$ ./test1.sh

. /usr/include/stdlib.h

.. /usr/include/features.h

... /usr/include/bits/predefs.h

... /usr/include/sys/cdefs.h

.... /usr/include/bits/wordsize.h

... /usr/include/gnu/stubs.h

.... /usr/include/bits/wordsize.h

.... /usr/include/gnu/stubs-32.h

.. /site/jf/cts2/tools/compiler/cpro/Compiler/12.1/293/composer_xe_2011_sp1.9.293/compiler/include/stddef.h

.. /usr/include/bits/waitflags.h

.. /usr/include/bits/waitstatus.h

... /usr/include/endian.h

.... /usr/include/bits/endian.h

.... /usr/include/bits/byteswap.h

..... /usr/include/bits/wordsize.h

.. /usr/include/sys/types.h

... /usr/include/bits/types.h

.... /usr/include/bits/wordsize.h

.... /usr/include/bits/typesizes.h

... /usr/include/time.h

... /site/jf/cts2/tools/compiler/cpro/Compiler/12.1/293/composer_xe_2011_sp1.9.293/compiler/include/stddef.h

... /usr/include/sys/select.h

.... /usr/include/bits/select.h

..... /usr/include/bits/wordsize.h

.... /usr/include/bits/sigset.h

.... /usr/include/time.h

.... /usr/include/bits/time.h

... /usr/include/sys/sysmacros.h

... /usr/include/bits/pthreadtypes.h

.... /usr/include/bits/wordsize.h

.. /usr/include/alloca.h

... /site/jf/cts2/tools/compiler/cpro/Compiler/12.1/293/composer_xe_2011_sp1.9.293/compiler/include/stddef.h

. /site/jf/cts2/tools/compiler/cpro/Compiler/12.1/293/composer_xe_2011_sp1.9.293/compiler/include/math.h

.. /usr/include/math.h

... /usr/include/bits/huge_val.h

... /usr/include/bits/huge_valf.h

... /usr/include/bits/huge_vall.h

... /usr/include/bits/inf.h

... /usr/include/bits/nan.h

... /usr/include/bits/mathdef.h

.... /usr/include/bits/wordsize.h

... /usr/include/bits/mathcalls.h

... /usr/include/bits/mathcalls.h

... /usr/include/bits/mathcalls.h

test4.c(3): catastrophic error: cannot open source file "math-complex.h"

#include "math-complex.h"

^

Where is math-complex.h? Can you attach it?

0 Kudos
Brandon_H_Intel
Employee
1,389 Views
Never mind, I commented out the include to math-complex.h in test4.c and got this:

blhewitt:~/quad/u103271$ ./test1.sh

. /usr/include/stdlib.h

.. /usr/include/features.h

... /usr/include/bits/predefs.h

... /usr/include/sys/cdefs.h

.... /usr/include/bits/wordsize.h

... /usr/include/gnu/stubs.h

.... /usr/include/bits/wordsize.h

.... /usr/include/gnu/stubs-32.h

.. /site/jf/cts2/tools/compiler/cpro/Compiler/12.1/293/composer_xe_2011_sp1.9.293/compiler/include/stddef.h

.. /usr/include/bits/waitflags.h

.. /usr/include/bits/waitstatus.h

... /usr/include/endian.h

.... /usr/include/bits/endian.h

.... /usr/include/bits/byteswap.h

..... /usr/include/bits/wordsize.h

.. /usr/include/sys/types.h

... /usr/include/bits/types.h

.... /usr/include/bits/wordsize.h

.... /usr/include/bits/typesizes.h

... /usr/include/time.h

... /site/jf/cts2/tools/compiler/cpro/Compiler/12.1/293/composer_xe_2011_sp1.9.293/compiler/include/stddef.h

... /usr/include/sys/select.h

.... /usr/include/bits/select.h

..... /usr/include/bits/wordsize.h

.... /usr/include/bits/sigset.h

.... /usr/include/time.h

.... /usr/include/bits/time.h

... /usr/include/sys/sysmacros.h

... /usr/include/bits/pthreadtypes.h

.... /usr/include/bits/wordsize.h

.. /usr/include/alloca.h

... /site/jf/cts2/tools/compiler/cpro/Compiler/12.1/293/composer_xe_2011_sp1.9.293/compiler/include/stddef.h

. /site/jf/cts2/tools/compiler/cpro/Compiler/12.1/293/composer_xe_2011_sp1.9.293/compiler/include/math.h

.. /usr/include/math.h

... /usr/include/bits/huge_val.h

... /usr/include/bits/huge_valf.h

... /usr/include/bits/huge_vall.h

... /usr/include/bits/inf.h

... /usr/include/bits/nan.h

... /usr/include/bits/mathdef.h

.... /usr/include/bits/wordsize.h

... /usr/include/bits/mathcalls.h

... /usr/include/bits/mathcalls.h

... /usr/include/bits/mathcalls.h

. envstructdefs.h

/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/../../../crt1.o: In function `_start':

(.text+0x18): undefined reference to `main'

Which is to be expected since there is no main.

One thing I noticed was that when you printed out your signon, Newport_j, the compiler said it was in gcc 4.2 compatibility mode, but the default gcc on Ubuntu 11.04 is gcc 4.5. I wonder if you're unintentionally pointing to an old gcc install that might be having problems. What do you get when you run "gcc --version"? Can you also add -dryrun to your icc command line, and send me the output from that?

0 Kudos
newport_j
Beginner
1,389 Views


I have solved the other issuesin the otherthreads. This is the only one remaining. One issue that I had was that I still had the Cilk Arts Cilk++ installed and $PATH pointed driectly to it. I changed my path and everything was okay.

Can I just remove the Cilk Arts directory and its contents or are their some system files that must be changed back? The only issue now is the expected an expression error, this is the only issue or unsolved thread remaining. Everything else is fine.

Is there some basic program (a canary in a coal mine) that will check the install. I thought it was here:

Itried the Makefile in

/opt/intel/composer_xe_20111_sp1.9.293/Samples/en_US/C++/cilk_samples

and got

icpc -O2 -I. -c -o linear-recurrence.o linear_recurrence.cpp
can't open file linear-reccurence.o for write
compilation aborted for linear-recurrence.cpp (code 1)
make *** [linear-reccurence.o] Error 1

I do not believe this should happen. Mypath is okay. the is no linear-recurrence.o so it fails.I know the directory cannot be written to, but it said in the Intel Cilk++ manual the trythe makefileand I did and got the above.

I just need a simple program to check theinstall. Maybe I should unistall this Intel Cilkversion and reinstall it.

I did a gcc --version and I got

gcc (Ubuntu/linaro 4.5.2-8ubuntu4) 4.5.2

So I believe that I am okay there.

Newport_j






0 Kudos
newport_j
Beginner
1,389 Views

I have added the command -dryrun to the icc command and attached the output.

It shows what version of gcc I am using also.

Hope this helps. It is the final problem on theIntel Cilk++update install.

Should I just uninstall and reinstall the Intel Cilk++ updated version?

I used an earlier version of this in late 2010 (abandoned for reasons explained earlier) and do not remember anything like these problems.

Thanks in advance.

Newport_j
0 Kudos
Brandon_H_Intel
Employee
1,389 Views
The sample directory needs to be copied to a directory where you have write-permissions. The default /opt/intel directory is not something a user typically has write-permissions to.
0 Kudos
newport_j
Beginner
1,389 Views


Okay,I just got a post from another Intel Forum responder and I think I know what the problem is. I just am unsure of the solution.


I amcopying andpasting his post:

Hello,

thank you for the comprehensive information you provided! Unfortunately not all attachments can be opened.

Anyways, I think I've an idea:
You were building an own GCC version which has been configured for installation prefix "/home/build/32/local/cilk" but in the end you're using GCC from "/home/james/Desktop/cilk". If you have moved (or copied & removed) the location there might be some pointers to the old location not being updated. Our compiler depends on those to find the correct paths for libraries & include files.

Could you please rebuild with using the final installation prefix without moving/copying anything around?

To make sure that a setup like yours works with our compiler I've also compiled my own GCC compiler (same version: 4.2.4). Only "gcc" had to be in $PATH so our compiler can find the correct libraries & header files automatically.

Best regards,

Georg Zitzlsberger


We agree on the problem, but not on the solution. I just modifyed the $PATH sohome/james/Desktop/cilk was no longer in the path. It solved the stdio.h being present and causing errorsproblem. I still had a problem withit not findong the icc math.h file.

I do not understand what his solution is. I asked a colleague foran interpretation andhe said thatI forgot to complete the installby not using the "make install" command. I do not think so, that is how I install shareware, butIntel offers a menu when it installs software whichwalks you through the complete proecess. So where did I go wrong on the install?

I think more needs to be done than by just changing the $PATH. How about this.

1. Unistall my Cilk Arts version.I am not sure how. DoI just remove the cilk directory and all of it subdirectries or do I have an uninstall command that can do the trick. The firstoption is the easiest if whenI installed the Cilk Arts Cilk++ compiler,I did not change any system files. Either way theCilk Arts compiler has got to go.

2. Uninstall my current version of the Intel Cilk++ compiler usingits uninstall command.

3. Reinstall the current version of the Intel Cilk compiler without any previousCilk Arts install on the hardrive at all and follow the menu.

4.Begin regular work.

Is this the best way? I think it solves all of my issues. It also gets rid of once and for all any previouos"cilks" installed.

Any help appreciated, thanks in advance.

Newport_j


0 Kudos
William_Leiserson__I
1,389 Views
Uninstalling Cilk++, either from Cilk Arts or from Intel, it is enough to "rm -rf" the directory, because all we ever shipped was the tarball (unless you built from source). I do not believe there is an uninstall command for either (at least on Linux). The Windows version had an uninstall script since it relied on the Microsoft compiler and put files all over your system. But the Linux version was just a self-contained tarball and it is safe to simply remove it.
0 Kudos
newport_j
Beginner
1,389 Views


After the new install many problems were solved. Unfortunately some remain, but I think that I am on to a solution and I need to ask a question(s).

Of all the functions that do not compile, I noticed thta they always gagged on math functions sin,coslog10 etc.

However, some of the functions in my program that have math function do not complain and comppile. Here is what I noticed. please remember this works for gcc, icc not so much.

The header section of the files have the following two files.

math.h
math-complex.h

In that order. In some files they may be separated by another intervening header file such as

math.h
stdib.h
math-complex.h

, but they always have the combination of math.h followed by math-complex.h. When I ussed the -H command line option, I noticed that both math.h files (gcc and icc) were pulled in by the icc compiler.

However, the math.h for gcc was pulled in by using the math-complex.h. WhenI say pulled inI am looking for the directory access and the file in thta directory.

WhenI compile with gcc this does not happen.

Now my question is:

Is there an icc version of math-complex.h ?
If there is not what is its equivalent.complex.h.

Any help appreciated. Thanks in advance.

Newport_j
0 Kudos
newport_j
Beginner
1,389 Views


Okay, I think thatI have found it. math-complex.h is a creation of our programmers here it is a shortcut. It is sort of a combination of math.h and complex.h. I will take it out and substitue complex.h. We already have math.h separately defined.

My question now does icc have its own version of complex.h, like it has its own version of math.h?

That would make things clearer.

Newport_j
0 Kudos
Reply