math.h를 사용하는 C 프로그램을 컴파일하는 방법?


15

math.h 헤더 파일과에서와 같이 제곱근 함수를 사용할 때 문제가 sqrt(d)있습니다. 그러나 내 컴파일러는 이것을 지원하지 않습니다. 이 문제에 대해 알려주십시오.

내 우분투 버전은 2012입니다.


2
우리는 프로그래밍 질문을 좋아하지만 질문은 우분투와 관련이 있어야합니다. 문제가 무엇인지 자세하게 설명 할 수 있습니까? 예 등?
fossfreedom

sqrt ((x2-x1) * (x2-x1) + (y2-y1) * (y2-y1)) ... 컴파일러가이 명령을 지원하지 않습니다
shreya

1
질문을 편집하여 응답하십시오. 코드 예제, 컴파일 방법, 우분투 버전, 컴파일러 버전 등 다른 컴파일러 / 디스트로에서이 작업을 시도 했습니까? 어떻게 되나요?
fossfreedom

1
@shreya 작성한 코드 관련 문제에 대한 질문은 특정 문제를 설명하고이를 재현하기위한 유효한 코드를 질문 자체에 포함시켜야합니다. 지침 은 SSCCE.org 를 참조하십시오 .
Braiam

4
나는 이것이 이것이 주제가 아닌 것으로 생각하지 않습니다. Windows와 같은 다른 많은 OS에서는 C 프로그램에서 수학 라이브러리를 사용하기 위해 특수 링커 옵션을 전달할 필요가 없습니다. 일부 유닉스 계열 운영 체제에서도 표준 C 라이브러리 구현에는이를 필요로하지 않습니다. 이것은 많은 사용자들이 Ubuntu와 같은 GNU / Linux 시스템으로 전환 할 때 직면하는 문제입니다. 질문이 특정 오류를 포함하도록 더 잘 작성되기를 바랍니다.이 주제를 고려하면 결국 편집해야합니다. 그러나 이것은 일반적인 C 프로그래밍 질문이 아니며 gccUbuntu 에서 사용하는 방법에 대한 질문입니다 .
Eliah Kagan

답변:


25

-lm당신의 gcc명령 의 끝에 추가 하십시오 .

Ubuntu와 같은 GNU / Linux 시스템에서 모든 최신 버전의 GCC를 사용하면 수학 라이브러리를 사용할 때 명시 적으로 링크해야합니다. 다른 표준 C 라이브러리와 함께 자동으로 연결되지 않습니다.

gcc또는 g++명령 을 사용하여 명령 줄에서 컴파일하는 경우 명령 끝에 넣어서이-lm 작업을 수행합니다 .

예를 들면 다음과 같습니다. gcc -o foo foo.c -lm


5

GCC 또는 G ++를 사용하여 LINUX에서 math.h 라이브러리 로 C 프로그램을 컴파일하려는 경우 컴파일 명령 뒤에 –lm 옵션 을 사용해야 합니다.

gcc xyz.c -o xyz -lm

여기,

gcc 는 컴파일러 명령 (컴파일러 이름)입니다.
xyz.c 는 소스 파일 이름입니다.
-o 는 출력 파일을 지정하는 옵션입니다.
xyz 는 출력 파일의 이름입니다.
-lm 은 수학 라이브러리 ( libm ) 를 다시 연결하는 옵션 입니다.

자세한 내용은 여기에 전체 기사가 포함 된 링크가 있습니다.
Linux에서 math.h를 사용하여 C 프로그램 컴파일


링크 명령 후 컴파일 명령이 아닙니다. (니트 픽킹은 유감이지만, 올바르게 선택하면 다른 상황을 이해하는 데 도움이됩니다).
mousomer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.