gcc와 연결할 때 수학 함수에 대한 정의되지 않은 참조

gcc와 연결할 때 수학 함수에 대한 정의되지 않은 참조

make설치 프로그램을 사용할 때 오류가 발생합니다. 오류로 인해 실패한 전체 단계는 다음과 같습니다.

gcc  -g -O2 -fopenmp -L/usr/lib -lcfitsio -lm  -o lenstool_tab e_nfwg.o lenstool_tab.o midpnt.o nrutil.o polint.o qromo.o read_bin.o lenstool_tab.o: In function `main':
/usr/local/src/lenstool-6.8/table_src/lenstool_tab.c:73: undefined reference to `log'
/usr/local/src/lenstool-6.8/table_src/lenstool_tab.c:73: undefined reference to `log'
e_nfwg.o: In function `surfdens2':
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:133: undefined reference to `pow'
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:130: undefined reference to `sin'
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:138: undefined reference to `pow'
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:140: undefined reference to `sin'
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:140: undefined reference to `pow'
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:144: undefined reference to `sin'
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:144: undefined reference to `pow'
e_nfwg.o: In function `nfwg_kappa':
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:63: undefined reference to `pow'
e_nfwg.o: In function `scmass':
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:165: undefined reference to `pow'
collect2: error: ld returned 1 exit status
make[1]: *** [lenstool_tab] Error 1
make[1]: Leaving directory `/usr/local/src/lenstool-6.8/table_src'
make: *** [all-recursive] Error 1

분명히 수학 라이브러리에 연결하는 데 문제가 있습니다. 코드 에 #include<math.h>. 적절해 보이는 makefile의 여러 부분에 내용을 추가했지만 도움이 되지 않습니다 -lm. -lm메이크파일을 포함시켰습니다여기그게 도움이 된다면. 이 문제를 해결하려면 makefile을 수정해야 합니까? 이 문제에 대해 웹을 검색했지만 makefile을 고려한 답변이 없는 것 같습니다. 다른 스레드에서 config.status를 include로 수정하라는 제안을 읽었 -lm지만 이를 수행할 위치가 명확하지 않습니다. 이전에는 아무런 문제 없이 이 프로그램을 Mac에 설치했지만 지금은 Ubuntu 14를 사용하고 있는데 이 오류가 발생합니다. 어떤 도움이라도 대단히 감사하겠습니다! 감사해요.

답변1

링크할 라이브러리를 지정해야 합니다.뒤쪽에그들에 대한 언급이 있습니다. 따라서 명령을 다음과 같이 변경합니다.

gcc  -g -O2 -fopenmp -L/usr/lib  -o lenstool_tab e_nfwg.o lenstool_tab.o midpnt.o nrutil.o polint.o qromo.o read_bin.o lenstool_tab.o -lcfitsio -lm

이렇게 하면 문제가 해결될 것입니다. 나중에 라이브러리를 지정하기 위해 Makefile에서 문제를 해결할 수 있습니다.

관련 정보