문제

OSX에서 링커 오류가 발생합니다 (동일한 코드의 경우 Linux 또는 FBSD의 오류 없음) :

ld: duplicate symbol _dbg_char in .libs/liboekernel_la-OEK_get.o and .libs/liboekernel_la-OEK.o

오류에 나열된 2 개의 리브는 내 것이지만 기호는 그렇지 않습니다. C ++ Flint는 '_dbg_char'가 두 개의 리브에 있음을 확인하지만 어디에서 왔는지 잘 모르겠습니다.

ID _DBG_CHAR의 방법에 대한 트릭, 전략, 명백한 답변은 대단히 감사하겠습니다.

프로젝트는 Libtool/Autotools 및 GCC 4.01을 사용하고 있습니다

도움이 되었습니까?

해결책

DBG_CHAR을 정의하는 로깅 / 디버그 매크로를 찾았습니다.dbg_ ## t'. 수정은 그것을 정적으로 만드는 것이 었습니다. 교훈:

  1. OSX는 기호 이름에 _을 추가합니다. Linux에서 NM을 실행하고 코드베이스를 검색하려고 생각하지 않은 동일한 기호를 보았습니다. "dbg_" 대신에 "_dbg_"
  2. OSX는 불평 할 권리가있었습니다
  3. 디버그 매크로를 자르고 포스트하는 풍부한 아이러니 나는 완전히 이해하지 못했습니다.

다른 팁

두 Libs가 있는지 확인하고 싶을 수도 있습니다 #include 선언하는 헤더 파일 _dbg_char 그러나 그리워 extern 예어. 어쩌면 그게 그렇습니다 #ifdef '다른 플랫폼을 위해 OS X에서만 해당 문제를 겪습니다.

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