2011-10-24 2 views
3

나는 C에서 약간의 행렬 곱셈을하고있는 중이 야하고 그 이유에 대해 컴파일에 실패 그러나 나는 progam를 컴파일하려고 :그런 파일이나 디렉토리 인 <cblas.h>이 존재하지 않는 이유는 무엇입니까?

해당 파일이나 디렉토리 cblas.h이

이는 없다 명령 내가 컴파일하는 데 사용하고 있습니다 :

gcc -o BLAS BLAS.c 

아무도 도와 줄 수 있습니까? 나는이 프로그램을 서버에서 컴파일하고있다. 이것이 차이를 가져올 지 모르겠습니다.

답변

5

-I directory 옵션을 추가해야합니다. 여기서 directorycblas.h 파일이있는 위치입니다.

이 제공 :

gcc -o BLAS -I directory_of_cblas_header BLAS.c 
+0

그래서 내 시스템의 헤더가 어디에 있는지 잘 모르겠습니다. 서버에서 "~/usr/lib/libblas"입니까? 빠른 답장을 보내 주셔서 감사합니다. – Hugs

+1

'find/-name cblas.h'를 실행하면 시스템에서'cblas.h '파일의 위치를 ​​지적해야합니다. – jopasserat

0

당신은 당신이 사용하는 라이브러리의 헤더 파일의 경로를 추가해야합니다. -I 옵션을 사용해보십시오 : 나는 RedHat7을 사용하고

gcc -o -I "path/to/you/headers" BLAS BLAS.c 
+0

헤더가 어디에 저장되어 있는지 또는 내가 가지고 있는지 확실하지 않습니다. 나는이 gcc -o -I/usr/lib/libblas/BLAS BLAS.c와 같은 컴파일을 시도 해왔다. 지금까지 대답 해 줘서 고마워. – Hugs

-1

.

후 내가 헤더 파일 (cblas.h, f77blas.h, lapacke_config.h, lapacke.h, lapacke_mangling.h, lapacke_utils.h, openblas_config.h가)에있는 것을 발견 sudo yum install openblas-devel

에 의해 openblas 설치 /usr/include/openblas/.

이러한 파일에 대한 부드러운 링크를 /usr/include/에 작성하면 문제가 해결됩니다.

+0

그것은 매우 잘못된 '해결책'입니다. 하위 디렉터리는 의도적으로 설계된 것입니다. 라이브러리는'/ usr/include'의 별도의 서브 디렉토리에 헤더를 넣어야합니다. 그러므로 여러분은'#include '또는 전 처리기에'-I' 플래그 또는 동등한 것을 전달하여'/ usr/include/openblas'에서 검색하도록 지시하십시오. 'include '의 루트에서 심볼릭 링크를 시작하지 않습니다. –

관련 문제