본문 바로가기

Programming/C++6

glibc 버전을 확인하려면... glibc는 GNU C 라이브러리로 GNU 프로젝트가 C 표준 라이브러리를 구현한 것입니다. 현재는 C++도 지원합니다. 응용프로그램이 컴파일할 때 사용된 GLIBC 버전과 현재 실행되는 OS에 설치된 버전이 다를 경우 오류가 발생합니다. libc 버전을 확인하려면 다음 명령어을 사용하면 됩니다. $ getconf -a | grep libc GNU_LIBC_VERSION glibc 2.35 $ $ ldd (Ubuntu GLIBC 2.35-0ubuntu3.4) 2.35 Copyright (C) 2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; .. 2023. 10. 26.
ARM 크로스 컴파일(Cross Compile) ARM 종류는 굉장히 다양하고 안드로이드, iOS 디바이스 등 플랫폼도 다양하기 때문에 해당 기기에 맞게 크로스 컴파일을 해야 합니다. 즉, ELF 64-bit ARM aarch64, Mach-O 64bit ARM aarch64 등 디바이스에서 돌아가게 하려면 맞춰줘야 합니다. Ubuntu/Debian 리눅스에서 제공하는 ARM 툴체인 환경은 Linaro 툴체인을 바탕으로 만들어져 있어서 두 가지 버전으로 제공됩니다. Hard Floating을 지원하는 버전과 그렇지 않은 버전으로 제공됩니다. ABI(Appication Binary Interface) 표준 응용프로그램간 이진 데이터를 어떻게 교환해야 하는지 다음과 같은 규칙들을 정합니다. - 데이터 타입과 정렬 방법 - 함수 호출 시 인수 및 결과에 대.. 2023. 5. 26.
리눅스 C++ 공유라이브러리 만들기 lddconfig 명령어 공유라이브러리를 만들기 위해서는 "ldconfig"라는 명령어를 이해해야 합니다. ldconfig는 공유 라이브러리 관련 정보를 갱신하고 설정하는 명령어로 /etc/ld.so.conf 파일의 내용을 읽어 /etc/ld.so.cache 파일을 갱신할 때 주로 사용하게 됩니다. 예를 들어, libMyGame.so 라는 공유라이브러리를 만들어 /usr/local/lib 폴더에 복사할 경우 시스템에서 알아서 로딩하지 않습니다. 공유라이브러리를 추가했으니 관련 라이브러리를 사용하게 되면 호출해 달라고 알려줘야 합니다. 즉, ldconfig가 /etc/ld.so.conf 파일을 참고해서 등록되어 있는 해당 폴더의 라이브러리를 갱신하여 호출 시 호출해 줍니다. 오래 전 버전에서는 ld.so... 2022. 9. 6.
C/C++(gcc/g++) 컴파일러(Compiler) 설치 현재 버전 확인하기 $ gcc --version gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 컴파일러 설치하기 $ sudo apt update $ sudo apt install make $ sudo apt install build-essential $ sudo apt install g++-multilib $ sudo apt.. 2022. 4. 28.
GCC 버전과 C++ 버전 매칭 Ubuntu 버전에 따라 기본으로 설치되는 GCC 버전과 C++ 버전이 달라서 헷갈리는 경우가 종종 있어서 참고용으로 매칭 테이블을 작성했습니다. C++11은 GCC 4.8.1 부터 전체 사양을 지원합니다.1998년에 첫 번째 표준인 C++ 98이 공개된 후 오랜 기간동안 정체기를 거치다가 2011년이 되어서야 새로운 개념들이 추가된 버전이 공개되었습니다. C++ 11부터 Modern C++ 이라고 부릅니다.C++GCC versionDescription (compiler option)C++26GCC 14 ~experimental-std=c++2c, -std=gnu++2cC++23GCC 11 ~experimental-std=c++23, -std=c++2b, -std=gnu++2bC++20GCC 8 ~-st.. 2022. 4. 22.
ldconfig 새로 작성한 공유 라이브러리를 사용하기 위해서는 라이브러리를 설치해야 합니다. 설치를 위해 디렉토리를 설정하고 ldconfig로 공유라이브러리 캐시를 다시 설정해야 프로그램에서 정상적으로 해당 공유 라이브러리를 로드할 수 있습니다. 즉, ldconfig는 프로그램을 실행할 때 공유 라이브러리 정보를 읽어 프로그램과 연결해 주는 링커를 설정하는 명령어로 리눅스에 *.so 파일을 인식하지 못할 때 재설정을 통해 읽도록 해 준다. 이 명령어는 존재하는 파일을 조사하고, /etc/ld.so.cache 캐시 파일을 설정하면서 필요한 라이브러리를 적재하고 심볼릭 링크를 만드는 역할을 합니다. /etc/ld.so.conf.d 디렉토리에 conf 파일을 추가/수정하거나 LD_LIBRARY_PATH를 변경할 경우에도 재.. 2022. 4. 17.