amd64에 crossbuild-essential-armhf 설치

amd64에 crossbuild-essential-armhf 설치

지금 당장 내 노트북(amd64)에서 작업하는 동안 이미 BeagleBone(armhf)에서 SSH를 통해 코드를 컴파일할 수 있습니다.

지금 내가 하려는 일은 IDE를 사용하여 해당 코드(Code::Blocks, KDevelop 또는 Qt Creator)를 디버깅할 수 있는 것입니다.

그래서 gdbserverBeagleBone에서 실행해서 접속해볼까 생각했는데 응답에 예상치 못한 값의 오류가 뜹니다. 나는 그것에 대해 읽었고 gdb처리하기 위해 armhf 실행 파일을 로컬로 빌드해야 하는 것 같습니다 . 그런데 amd64용으로 만들어진 armhf 지향도 필요할 것 같아서 gdb설치를 해보았습니다 crossbuild-essential-armhf. 이를 위해 armhf 아키텍처를 으로 추가했지만 dpkg --add-architecture armhfapt-get 업데이트를 수행할 수 없습니다. 나는 이것들을 많이 얻습니다:

Err http://security.ubuntu.com trusty-security/main armhf Packages             
  404  Not Found [IP: 2001:67c:1562::13 80]

저장소를 확인하면 실제로 어디에도 armhf가 없습니다.

그럼 내가 뭘 잘못하고 있는 걸까요? 또한 이것이 다른 아키텍처를 사용하여 원격 디버그하는 올바른 방법입니까, 아니면 더 좋은 방법이 있습니까?

답변1

Ubuntu는 armh(예: http://ports.ubuntu.com/)에 대해 별도의 저장소를 사용합니다. crossbuild-essential-armhf를 성공적으로 설치하려면 다음 단계를 따라야 합니다.

  1. 달리다dpkg --add-architecture armhf

  2. /etc/apt/sources.list및 의 모든 적절한 deb 행에 대해 올바른 아키텍처를 지정하십시오 /etc/apt/sources.list.d. 예를 들면 다음과 같습니다.

    deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu trusty main universe
    deb [arch=armhf] http://ports.ubuntu.com/ trusty main universe
    

deb-src 라인에 대한 아치를 지정하는 것은 의미가 없습니다. 3. 달리다 apt-get update 4. 달리다apt-get install crossbuild-essential-armhf

보세요https://wiki.debian.org/Multiarch/HOWTO

이 가이드에서 언급한 대로 chroot(또는 docker 컨테이너)에서 이러한 명령을 실행할 수도 있습니다.Ubuntu에서 MultiArch(armel / armhf) 시작하기

답변2

여기에는 다양한 Docker 기반 크로스 컴파일러가 있습니다.

https://github.com/dockcross/dockcross

답변3

빌드 호스트의 dpkg 소스에 armhf를 추가할 필요는 없습니다. 또 다른 접근 방식은 debootstrap을 사용하거나 beagleboard.org 이미지에서 채울 수 있는 chroot를 사용하는 것입니다.

VS Code를 사용한 원격 GDB 기호 디버깅을 사용한 C++ 크로스 컴파일에 대한 자세한 가이드는 다음을 참조하세요.

https://takeofftechnical.com/x-compile-cpp-bbb

관련 정보