2017-02-28 1 views
-1

실행 시간에 언급 한 바와 같이 GCC

here 이상과 here 그래서 당신은 명시 적으로 '를 전달하여 수학 라이브러리를 링크해야 프로그램이 다음 math.h를 포함하여 수학 함수를 사용하고있는 경우 - lm 'flag

그러나 나는 단지 내 양성의 C 코드에서 gcc로 -lm 플래그를 사용하지 않고 연결을 관리한다.

그리고 완벽하게 작동합니다.

실마리. 많은 시스템에

GCC -version

gcc -v 
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 
Apple LLVM version 8.0.0 (clang-800.0.42.1) 
Target: x86_64-apple-darwin16.4.0 
Thread model: posix 
InstalledDir: /Library/Developer/CommandLineTools/usr/bin 
+1

나는 이것을 똑바로 세워 둡니다. 어떤 것이 작동하고 있습니다. 당신은 불만을 가지고 있습니까? :-) – paxdiablo

+0

@paxdiablo :) 나는 단지 모든 머신에서 동일하게 작동하는지 아니면 MacOS에서 특정 버전의 gcc를 사용하는지 알고 싶다. – Noobie

+0

FWIW, 나는 gcc의 부분에서 시대 착오적 인 행동이라고 생각한다. 다른 libc와 별도의 라이브러리에 있습니다. 그러나 메모리에서 gcc/ld는 이런 종류의 것을 제어하는 ​​매우 강력한 설정 파일을 가지고 있기 때문에 Apple (또는 BSD)이 방금 고칠 수 있습니다. 나는 그 곳에서 일하는 것에 의지하지 않을 것이다. – paxdiablo

답변

2

은 libm의 전통적 무엇의 일부는 여러 가지 이유로 표준 C 라이브러리에 포함되어 있습니다. 다른 부분은 math.h 헤더에 직접 구현 될 수 있지만 다른 부분은 컴파일러에 의해 인라인으로 구현 될 수 있습니다.

코드가 무엇이든 관계없이 libm과 링크하지 않습니다. 완전히 정확하지는 않지만 무언가를하는 경우가 종종 있습니다. 좋은 습관은 그 행운을 무시하고 표준/문서가 미래에 문제의 수를 줄이기 때문에 말하는 것을 여전히 수행하는 것입니다.

관련 문제