2013-06-07 1 views
8

안녕하세요 저는 코딩에 Linux 12.04와 geany를 사용하고 있습니다. 내가 C로 작성한 코드는 sqrtf 명령을 사용하여 float의 제곱근을 찾을 때까지 완전히 잘 돌아갔다. 오류 : HAC3.c :(. 텍스트 + 0xfd7) : 'sqrtf'에 대한 정의되지 않은 참조. sqrtf c에서`sqrtf '에 대한 정의되지 않은 참조

내가 sqrtf을 사용하고 코드의 일부

는 :

float syn(float *a, float *b, int dimensions) 
{ 
    float similarity=0; 
    float sumup=0; 
    float sumdown=0; 
    float as=0; 
    float bs=0; 
    int i; 
    for(i=0; i<dimensions; i++) 
    { 
     sumup = sumup + a[i] * b[i]; 
     as = as + a[i] * a[i]; 
     bs = bs + b[i] * b[i]; 
    } 
    sumdown = sqrtf(as) * sqrtf(bs); 
    similarity = sumup/sumdown; 
    return similarity; 
} 

나는 math.h를 포함하지만이 문제가 될 것 같지 않습니다. 그래서 geany를 고칠 수있는 방법이 있는지 궁금해서 다시 올 수 없습니까? 나는 지식이 거의 없으므로 가능하면 설명하려고 노력한다.

+3

sqrtf (c99 이후) 링커 옵션. 예 :'gcc prog.c -std = c99 -lm' – BLUEPIXY

+1

나중에 참고할 사항 : 무언가가 컴파일/링크되지 않았다면 : ** man -k **, 귀하의 경우 ** man - k sqrtf ** ... 사용 방법을 알려줍니다. – tink

+0

남자 -k sqrtf 무엇입니까? –

답변

7

Build ->Set Build Commands 다음 C commands 아래를 클릭하면 새 라벨 (이름은 Link)을 지정할 수 있습니다. 그것을 입력하십시오 gcc -Wall -o "%e" "%f" -lm - -lmmath 라이브러리를 귀하의 앱에 연결하도록 알려줍니다. OK을 클릭하십시오.

그런 다음 Build을 클릭하고 새로 생성 된 레이블 - Link을 선택하십시오. 이것은 당신을 위해 그것을해야합니다.

+0

내 질문에 대한 완벽한 대답입니다. 고마워요. –

+0

기꺼이 도와 드릴 수있었습니다. – Nobilis

+1

파일 뒤에 -lm 플래그를 지정해야합니다. 이 잘못으로 인해 버그가 발생했습니다. – Flipbed

7

수학 기능을 제공하려면 -lm과 (과) 연결해야합니다.

+0

'man sqrtf'에서 "-lm과 연결하십시오."라는 메시지가 나타납니다. –

+0

geany에서 정확히 -lm을 어떻게 연결할 수 있습니까? 미안하지만 내 지식이 거의 없습니다 –

관련 문제