libtommath 라이브러리를 사용하려고합니다. 우분투 리눅스에서 NetBeans IDE를 사용하고 있습니다. 나는 라이브러리를 다운로드하고 빌드했는데, 결과를 얻는 .a 파일을/usr/lib /에 넣고 .h 파일을/usr/include에 넣었다.라이브러리를 포함하려하지만 '정의되지 않은 참조'메시지가 계속 표시됨
파일을 찾는 중이다. 적절하게 (나는 더 이상 그 오류를 얻지 못하기 때문에, 나는/usr 디렉토리에 설치하기 전에 그렇게했다.) 나는 (라이브러리에있는) mp_init를 호출하는 간단한 주요 만들 때 내 사업을 시도 할 때
그러나, 나는 다음과 같은 오류가 발생합니다 : 그래서
mkdir -p build/Debug/GNU-Linux-x86
rm -f build/Debug/GNU-Linux-x86/main.o.d
gcc -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/main.o main.c
mkdir -p dist/Debug/GNU-Linux-x86
gcc -o dist/Debug/GNU-Linux-x86/cproj1 build/Debug/GNU-Linux-x86/main.o
build/Debug/GNU-Linux-x86/main.o: In function 'main':
/home/[[myusername]]/NetBeansProjects/CProj1/main.c:18: undefined reference to `mp_init'
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-Linux-x86/cproj1] Error 1
을, 그것과 같다 링커는 라이브러리 내에서 함수를 찾을 수 없지만 거기에 있습니다. 그래서이 문제의 원인이 무엇인지 모릅니다.
gcc 명령을 직접 입력하고 makefile을 건너 뛰어도 동일한 오류가 발생합니다. 또한 정적 라이브러리가 gcc로 컴파일되었는지 확인했습니다. 그래서,
$ gcc -l /usr/lib/libtommath.a main.c
/usr/bin/ld: cannot find -l/usr/lib/libtommath.a
collect2: ld returned 1 exit status
$ gcc -llibtommath.a main.c
/usr/bin/ld: cannot find -llibtommath.a
collect2: ld returned 1 exit status
$ gcc -Llibtommath.a main.c
/tmp/ccOxzclw.o: In function `main':
main.c:(.text+0x18): undefined reference to `mp_init'
collect2: ld returned 1 exit status
$ gcc -Llibtommath.a main.c
/tmp/ccOxzclw.o: In function `main':
main.c:(.text+0x18): undefined reference to `mp_init'
collect2: ld returned 1 exit status
나는이 물건에 매우 녹슨입니다 : 내가 직접 컴파일을 할 경우
나는이 같은 오류를 얻을 -l 또는 -L와 라이브러리를 추가편집 추가하기 나는 여기서 올바른 명령을 사용하고 있는지 확신하지 못한다. -L 예에서 발견 된 라이브러리는 무엇인가? 라이브러리가 발견되지 않으면 어떻게하면 라이브러리를 찾을 수 있습니까?/usr/lib에 있는데, 현재 디렉토리의 .a 파일로 시도했습니다. 설정해야 할 환경 변수가 있습니까? 그렇다면, 어떻게, 등
나는 완전히 다른 라이브러리 (GMP)를 시도하고 정확히 같은 문제가있었습니다. 이것은 일종의 우분투 환경 문제가되어야합니까? 누구든지이 문제를 해결하는 방법을 알고 있습니까?
+1 오, 고마워! 링크 해결 순서가 완벽하다는 것을 알고 있지만, 사실 이러한 사실을 상기시키는 데 도움이됩니다! – scraimer
이것은 나를 위해 일했습니다. 내 아주 오래된 makefile이 작동하는 데 사용되었지만, 이제는 컴파일러가 자신의 이익을 위해 너무 똑똑해지고있는 것 같습니다 :) –
감사합니다. –