문제

재배치에 맞게 잘린 재배치 :`.BSS '에 대한 R_X86_64_PC32

컴파일 할 때 g ++ 에서이 링커 오류가 발생합니다.

이 정의가 내 컴파일을 중단하기 때문에 나머지 코드는 자료가 아닙니다. 시간 함수는 sys/time.h에서 발견됩니다. 64 비트 Rhel에 편집되었습니다.

 long ntime() {

     struct timeval tp;

     gettimeofday(&tp, (struct timezone *)0);
     return (tp.tv_sec*1000 + tp.tv_usec / 1000);
 }

이것이 왜 잘못되었는지 말해줘?

미리 감사드립니다.

도움이 되었습니까?

해결책

링커 오류가 왜 발생하는지 잘 모르겠지만 구조물 시간대 정적으로 만드는 특별한 이유가 있습니까? 로컬로 만드는 것은 힙 (잘, BSS) 공간을 보존하면서 기능을 실수로 만듭니다.

편집 : 여기에 문제가 있습니다. 정적 힙 공간에서 2GB를 초과했습니다. 동적으로 할당되거나 메모리 모델을 변경하십시오. GCC에서 이것은 -mcmodel = medium을 전달하여 수행 할 수 있으며 모든 객체 파일에서 사용해야합니다. 그러나 이것은 오버 헤드가 다소 증가 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top