나는 생성 과정이 나에 의해 통제되지 않으며 그 출처도없는 .a
파일들을 가지고있다. 연결에 사용할 때 libA.a
은 libA.a
에 정의되지 않은 기호가 있지만 libB.a
에 정의 된 기호가있는 경우 libB.a
에 따라 달라 지므로 ld
/gcc
명령 줄에 올바른 순서로 넣을 수 있습니다.두 개의 Linux 정적 라이브러리가 주어지면, 하나가 다른 라이브러리에 의존하는지 어떻게 알 수 있습니까?
이러한 종속성을 BUILD
파일 bazel에 유지하고자하기 때문에 링크를 두 번 지정하지 마십시오. 즉, 해당 종속성을 알고 싶습니다.
나는 libA.a
주어 libB.a
이 libA.a
이 libB.a
에 따라 달라집니다 여부를 말할 수있는 몇 가지 명령 줄 도구가 있는지 궁금해? 그러한 스크립트가 없으면 어떻게 그런 스크립트를 작성합니까?
참고 : 의존성에 대한 나의 정의는 100 % 정확하지 않을 수 있습니다. 정의되거나 정의되지 않은 기호 이외의 다른 유형의 종속성이 있으면 알려주십시오.
가장 간단한 방법은 nm libA.a
및 nm libB.a
의 출력을 처리하고 U
상징을 찾는 것입니다,하지만 man nm
에 나열된 문자의 많은 유형이 그들 각각은 서로 다른 의미를 가지고있다, 그래서 내가 경우 몇 가지를 놓칠 수도 걱정 I 그러한 단순화 된 접근 방식을 사용하십시오.
정적 라이브러리는 최종의 다른 lib 디렉토리에 의존하지 않습니다. –
@IporSircer, 그들은'.so' 파일과 같은 파일 형식으로 인코딩 된 의존성을 가지고 있지 않지만 의존성을 가지고 있습니다. 'libA.a'가'libB.a'에 의존한다면,'ld'에서 명령 행'libA.a'가'libb.a' 앞에 놓여 져야합니다. 왜냐하면'ld'가 작동하기 때문입니다. –