2017-11-22 1 views
3

cargo build --release --target aarch64-unknown-linux-gnu을 사용하여 내 aarch64 아키텍처에 대해 spotifyd를 컴파일하려고합니다. 모든 종속성이 설치되어 있고 지금까지 컴파일이 작동합니다.spotifyd, arm64 용 교차 컴파일

그러나, 마지막 단계 (Compiling spotifyd v0.1.1 (file:///home/ubuntu/spotifyd)가) 실패 :

= note: aarch64-linux-gnu-ld.gold: -Wl,--as-needed: unknown option 
      aarch64-linux-gnu-ld.gold: use the --help option for usage information 

화물에 대한 나의 구성은 aarch64 링커 사용하는 설정입니다 :

/root/.cargo/config 

[target.aarch64-unknown-linux-gnu] 
linker = "aarch64-linux-gnu-ld.gold" 

-Wlaarch64-linux-gnu-ld.gold을 내 사용할 수없는 것 같습니다를 , aarch64-linux-gnu-ld.gold에 대한 대안이 있습니까? 아니면화물에서 -Wl기를 제거 할 수 있습니까?

귀하의 조언에 감사드립니다.

+0

이제 amd64 또는 arm64가 있습니까?또한,'-Wl, xyz'를 링커에 건네 주면 그 깃발이 보통 "링커에게 앞으로 xyz"를 의미하기 때문에 저에게 이상하게 보입니다 ... – Siguza

+0

arm64, -wl은 자동으로화물에 의해 통과 된 것 같습니다 ... –

답변

0

링커에서 "-Wl"을 옵션으로 사용하지 않으면 gcc 컴파일러 드라이버의 명령 줄 매개 변수입니다.

Gcc는이 옵션을 사용하여 명령 줄 매개 변수를 링커에 전달합니다.이 매개 변수는 드라이버 gcc가 .o (객체) 파일을 제공 할 경우 호출합니다.

는 GCC 문서를 3.14 Options for Linking

-Wl, 옵션 링커 옵션으로

패스 옵션을 참조하십시오. 옵션에 쉼표가 있으면 쉼표로 여러 옵션으로 분할됩니다.

은 (바로 아래로 이동) 다음 설명 중 하나를 참조하십시오 :

젠투 위키

, "Project: Quality Assurance/As-needed"섹션에서 "컴파일에 실패, 인식 할 수없는 옵션".

사용중인 Binutils Gold Linker의 버전을 알고 있어야합니다 (예 : Bug 18859). 항상 버그 리포트를 확인하십시오,하지만 버그는 문제가 아닙니다.

마지막 질문에 직접 답하려면 "할 수 있습니까?"라고 대답하십시오.하지만 할 수있는 일은 잘못되었습니다. 그 명령은 사용하지 않는 코드를 제거합니다.

이 옵션을 사용하면 링커가 작성중인 공유 라이브러리에서 실제로 사용하지 않는 경우 해당 명령 행에 제공된 일부 라이브러리를 무시할 수 있습니다 (링크하지 않음).

링커를 aarch64-linux-gnu-gcc로 변경하면 링크가 작동합니다. Reddit "Cross-compiling and linker flags"의 martinhath의 질문을 참조하십시오.

그래서 당신이 원하는 것은 이것이다 :

/root/.cargo/config

[target.aarch64 - 알 - 리눅스 GNU]

링커 = "aarch64-linux- gnu- gcc "

+0

와우! 귀하의 작업에 많은 감사 드리며 여기를 파고 드십시오! 나는 그것을 물론 시도 할 것이다! –

+0

문제 없습니다. 원하는 경우 .configure 파일을 통해 링커가 발견 된 위치를 찾고 컴파일러 드라이버 대신 링커를 직접 호출하는 이유를 결정할 수 있습니다. 일반적으로 확장 된 검색 루틴은 특정 링커의 특정 기능을 검색하는 데 사용됩니다. 후속 스크립트를이 방법에 맞게 조정해야합니다. 구성의 버그는 있지만 컴퓨터 나 프로그램에 해를 끼치 지 않는 버그는 아닙니다 (일단 스크립트가 편집되면). 문서에서 제공되는 이메일 주소 또는 웹 사이트에서 버그 보고서를 작성하는 것이 좋습니다. – Rob

+0

다른 문제 (libasound)로 어려움을 겪고 있습니다. 그러나이 질문에 대한 답이 맞습니다. 정말 고마워! –

관련 문제