문제

GCC 컴파일러를 사용하여 C ++가있는 Linux 환경에서 작업하고 있습니다.

저는 현재 기존의 대규모 코드를 수정하고 업그레이드하기 위해 노력하고 있습니다. 이의 일부로, 코드 전체에 다양한 장소에 많은 작은 참조를 추가하여 물건을 연결하고 몇 가지 새로운 외부 코드 라이브러리를 추가해야합니다. 빌드 프로세스를 처리하기 위해 configure.ac 파일에 연결된 MakeFiles의 크고 복잡한 구조도 있습니다.

빌드 프로세스를 시작하면 모든 것이 문제없이 컴파일되지만 새로 추가 된 사용자 정의 코드 라이브러리를 사용하려고 할 때 두려운 링커 오류가 다시 제공됩니다. 우리는 이제 철자 불일치를 찾는 미세한 치아 빗으로 막대한 양의 코드를 겪었고, 모든 라이브러리가 빌드 프로세스에 포함되어 있는지 확인하고 .O 파일에 덤프를 사용하는 것을 포함하고. 모두와 어디에 있어야하는지. 우리는 또한 도서관을 개별적으로 테스트했으며 문제는 확실히 거기에 거짓말을하지 않습니다.

요컨대, 우리는 이러한 시나리오에서 일반적으로해야 할 대부분의 일을 시도했습니다.

CPPCHECK 또는 부목 (둘 다 사용할 수없는)과 유사한 정맥에서 링커 오류를 자동으로 감지 할 수있는 C ++를위한 도구가 있습니까?

도움이 되었습니까?

해결책

당신의 플랫폼을 모르지만, 나는 정적 라이브러리를 깨달을 때까지 GCC에서 링커 문제로 언젠가 보냈다 (.a) 링크에는 특정 순서가 필요하며 링크와 동일하지 않습니다. gcc object.o first.a second.a ~보다 gcc object.o second.a first.a.

다른 팁

FWIW (별로) 몇 가지 다른 플랫폼에 액세스 할 수 있으므로 다른 링커를 사용하여 이런 종류의 문제를 해결하려고합니다. 다른 링커를 사용할 수 있다면 다음을 찾을 수 있습니다.

a) 프로그램 링크는 '왜 링크되지 않습니까?'에서 문제를 변화시킵니다. '링커와 링크의 차이점은 무엇입니까?' 정확히 한 걸음 앞으로 나아가지는 않지만 때로는 한쪽으로 한 단계가 해결책을 볼 수있는 다른 관점을 제공합니다.

또는

b) 연결되지 않아 다른 링커가 실패한 이유에 대한 더 유용한 정보를 제공 할 수 있습니다.

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