2012-04-22 4 views
0

나는 mpir (Windows에서)를 사용하여 공용 - 개인 키 생성기를 작성했으며 제대로 작동합니다.리눅스에서 GMP (MPIR) 링커 오류

gmp 라이브러리를 사용하여 Linux 컴퓨터에서 컴파일하려고하면 링커 오류가 발생합니다.

/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 0 has invali 
d symbol index 11 
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 1 has invali 
d symbol index 12 
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 2 has invali 
d symbol index 2 
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 3 has invali 
d symbol index 2 
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 4 has invali 
d symbol index 11 
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 5 has invali 
d symbol index 13 
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 6 has invali 
d symbol index 13 
... 
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crt1.o: In function `_start' 
: 
(.text+0x20): undefined reference to `main' 
collect2: ld returned 1 exit status 

나는 g++ -lgmp prime.cpp을 사용하고 있습니다. 나는 non-gmp 함수를 사용하지 않았다. 어떤 생각? 코드가 많아서 코드를 추가하지 않습니다. 내가 사용

+0

GCC에 대한 정확한 명령은 무엇입니까? – stark

+0

g ++ -lgmp key.cpp – questions

+0

기본 (C) "hello world"프로그램을 컴파일 할 수 있습니까? – Mat

답변

1

g ++ -lgmp prime.cpp이 명령 라인은 두 가지 방법으로 나뉩니다

:

  1. 당신은 당신은 지정된 main
  2. 의 definiton을 제공하기 위해 무시 라이브러리를 참조하는 소스 앞에. 해야합니다

    g++ main.cpp prime.cpp -lgmp

    명령 줄 matters에 라이브러리와 소스/객체의 순서.

업데이트 : 그것을 만들기 전에 .. 내가 다른 파일을 만들려고 그래서

는 여러 개의 파일이 있습니다

.. 주요 파일이 그들에 따라 달라집니다. 이 경우

는 올바른 명령은 다음과 같습니다

# Compile, but don't link, prime.cpp 
g++ -c prime.cpp 
+0

여러 파일이 있습니다. 주 파일은 빌드에 따라 다릅니다. 다른 파일을 빌드하려고했습니다. – questions

+0

그래 .. 그거야. 감사!! 그러나 다른 하나의 파일에서 gmp는'mp_bitcnt_t '타입을 식별하지 못합니다.'mp_bitcnt_t가 선언되지 않았습니다'라고 말합니다 – questions

+0

어떤 GMP 버전을 사용하고 있습니까? IIRC에서는 mp_bitcnt_t가 5.0에 도입되었습니다. – casevh