QNX/ARM에 대한 간단한 프로젝트를 컴파일하려고합니다.이 프로젝트는 기본 실행 파일과 두 개의 공유 라이브러리 인 liba 및 libb로 구성됩니다.ARM/QNX에 대한 상호 연결이 간접/이행 종속성과 함께 실패합니다
메인은 liba에만 의존하고 libb에서는 전혀 사용하지 않습니다. liba는 libb에 의존합니다. 종속성 체인은 main -> liba -> libb입니다. 따라서 libb는 main의 간접/이행 종속성입니다. liba.so는 liba/서브 디렉토리에 있으며, libb.so는 libb/서브 디렉토리에 있습니다. 두 -L 라인, 링커가 문제 libb 및 LIBA 모두를 찾는데 어려움이 없어야하기 때문에,
qcc -Vgcc_ntoarmv7le -Wl,--no-undefined -lang-c++ -o linktest main.o -L$TARGET/lib -Llibb -Lliba -la
당신이 볼 수 있듯이 :
나는 다음과 같은 방법을 주요 연결합니다. 이것은 -L로 지정에도 불구하고
ntoarm-ld: warning: libb.so, needed by liba/liba.so, not found (try using -rpath or -rpath-link)
strace를 사용하는 것은, LD 결코 심지어 libb/디렉토리에 보이는 것을 확인 : 나는 QNX/ARM 툴체인과 함께이를 컴파일 할 때
, 나는 오류가 발생합니다.
왜 여기에 -L 디렉토리가 보이지 않습니까?
IRC에서이 동작은 사용 된 링커에 따라 다르다고 들었는데 일부는 간접적 인 종속성을 자동으로 가져 오지만 일부는 그렇지 않습니다. ld가 -L 경로를 완전히 무시하는 이유를 알고 싶습니다. –