gcc가 자꾸 intel c 컴파일러의 헤더파일을 참조하네요!

drfaust의 이미지

제가 머신에 icc를 깔아서 gcc 와 함께 사용하고 있습니다.

그런데 얼마 전부터 gcc로 -lm옵션을 줘서 컴파일을 하면

/usr/local/include밑에 있는 math.h를 참조한 다음에 intel 컴파일러

전용이라면서 에러가 나면서 죽어버립니다.

gcc의 math.h는 /usr/include밑에 있습니다만.......

아무리 찾아봐도 참조하는 순서를 어떻게 바꿔야 하는지 모르겠습니다.

gcc가 실행될 때 /usr/local/include대신에 /usr/include를 먼저 참조하도록

만들면 될 꺼 같은데.....

-I 옵션 같은 것도 뒤에 찾는 path를 추가할 뿐이지 우선 순위를 바꾸는 것

같지는 않더군요.

혹시, 비슷한 문제를 경험하신 분 있으시면 조언 부탁드립니다. ^^;

wariua의 이미지

어떻게든 두 가지 헤더 파일들을 적당히 분리하는 것이 정석이겠지만, 불편하나마 당장 컴파일이 되도록 하려면...

$ gcc -nostdinc -I/usr/lib/gcc/i486-linux-gnu/4.0.3/include -I/usr/include ...

정도입니다. gcc -v some_source.c 해서 나오는 내용 가운데
#include <...> search starts here:
 /usr/local/include
 ...
 /usr/include
End of search list.

에서 /usr/local/include를 제외한 항목들을 -I로 지정해 주시면 됩니다.
----
$PWD `date`

$PWD `date`

drfaust의 이미지

감사합니다 ^^

일단 급한대로 님이 알려주신대로 해야겠네요 ^^