함께 볼만한 글
2022.10.27 - [VS Code] - Ubuntu 에서 VS Code와 vcpkg 그리고 cmake 사용 (1/2)
* 아래의 내용은 제가 테스트하며 작업한 내용이며, 완벽한 방법은 아닌 것 같습니다. 저처럼 리눅스에 익숙하지 않은 분들이 저의 시행착오 방향이 도움이 되길 바라며 이글을 남깁니다. 추후 방법을 제대로 찾으면 해당 문서를 수정하겠습니다. 일단 제가 시도한 방법을 적어봅니다. 참고만 해주시면 좋겠습니다. *
일단 Arm용 컴파일러를 설치해야 합니다. 크로스컴파일의 대상 플랫폼에 따라 필요한 컴파일러를 설치합니다. 저는 Arm64 빌드가 필요하여 관련 컴파일러들을 설치하였습니다.
Arm 32bit
sudo apt-get install gcc-arm-linux-gnueabi
sudo apt-get install g++-arm-linux-gnueabi
Arm 64bit
sudo apt-get install gcc-aarch64-linux-gnu
sudo apt-get install g++-aarch64-linux-gnu
VSCode에 들어가서 하단 상태표시바 가운데를 보면 현재 선택된 컴파일러가 보입니다. ((예)GCC 11.3.0 x86_64-linux-gnu) 이것을 클릭합니다.
그러면 상단에 아래와 같은 메뉴가 나옵니다. 이 떄 Scan for kits을 누르면 새로 설치한 컴파일러가 함께 표시됩니다.
이제 방금 설치한 컴파일러를 선택 ((예)GCC 11.3.0 aarch64-linux-gnu) 후 빌드를 진행하면 해당 컴파일러로 빌드됩니다. 만약 프로젝트가 vcpkg를 사용하여 외부 라이브러리를 이용하고 있다면 arm64용 라이브러리도 따로 설치해 주어야 합니다.
sudo vcpkg install [library_name]:arm64-linux
여러 방법이 있겠지만 저는 CMAKE에서 arm용 vcpkg 라이브러리를 가져다 써야 하는데 VCPKG_TARGET_TRIPLET 등이 x64-linux로 나오는 바람에 제대로 경로를 찾지 못하여서 컴파일이름에 aarch64가 들어가 있다면 다음과 같이 강제로 VCPKG_TARGET_TRIPLET을 바꾸었습니다. 그리고 이를 이용하여 vcpkg의 라이브러리의 include 경로를 바꾸고 진행하였습니다.
string(FIND ${CMAKE_C_COMPILER} "aarch64" ARM64)
if (NOT ${ARM64} EQUAL -1)
# ARM 컴파일 옵션으로 되어 있을 때
set(CMAKE_SYSTEM_PROCESSOR arm)
set(VCPKG_TARGET_TRIPLET arm64-linux)
endif ()
include_directories("${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include")
사실 현재 vcpkg에서 라이브러리는 템플릿 라이브러리만 사용중이었고 x64-linux용 빌드 환경도 같이 구축되어 있어서 위처럼 include 경로만 조정해도 별문제가 없었지만 공유라이브러리를 쓰거나 x64-linux용 라이브러리는 안쓰고 있는 상황이라면 제대로 경로를 찾지 못하여 잘 동작하지 않을 수 있다고 생각됩니다. 이때문에 완벽한 방법은 아니라 적었습니다. 추후 기회가 있어서 방법이나 상황을 만난다면 해당 내용은 수정하겠습니다.
(번외) 크로스 컴파일 중 시행착오 |
저는 arm칩을 사용하는 모듈용 어플리케이션을 작성할일이 있어서 이런 작업을 했는데 이 모듈은 성능이 좋지 않고 이미 우분투 18.04로 세팅된 환경이었습니다. 저는 빌드pc는 최신 우분투를 쓰고 싶었고 별 문제없으리라 생각하며 우분투 22.04로 구성하였습니다. 그후 빌드pc로 개발을 대충 진행하였고 어느 정도 완성이 된후에 테스트를 위해 arm pc에 빌드된 파일을 넣고 실행을 했습니다. 실행을 하니 glibc (GNU C Library) 2.4 버전을 찾을 수 없다는 오류가 발생하였습니다. 처음에는 뭐 가져다쓴 라이브러리간 종속성때문에 그렇겠거니 최신버전 깔아주면 되겠지 했는데 찾다보니 우분투 18.04에서는 glibc는 2.27까지만 지원하는 제한이 있었습니다. 여러방법이 있겠지만 리눅스에 익숙하지 않았던 저는 결국 빌드pc의 우분투 버전을 18.04로 다운시키는 방법을 택했습니다. 저처럼 리눅스에 익숙하지 않은 사람은 그냥 최대한 환경을 비슷하게 맞추는게 좋겠구나 그나마 편하겠구나 싶었습니다. |
함께 볼만한 글
2022.10.27 - [VS Code] - Ubuntu 에서 VS Code와 vcpkg 그리고 cmake 사용 (1/2)
'VS Code' 카테고리의 다른 글
Ubuntu 에서 VS Code와 vcpkg 그리고 cmake 사용 (2/2) (0) | 2022.10.27 |
---|---|
Ubuntu 에서 VS Code와 vcpkg 그리고 cmake 사용 (1/2) (0) | 2022.10.27 |
VS Code 와 MD (Mark Down) 활용 (0) | 2022.10.06 |