CMake: target_link_libraries 사용법
CMake로 여러 타깃을 나눠 빌드하다 보면 "라이브러리는 분명히 링크했는데 헤더를 못 찾는다"는 에러를 자주 마주친다. 원인은 대부분 target_link_libraries의 PUBLIC/PRIVATE/INTERFACE 키워드를 잘못 골랐기 때문이다. 이 세 키워드는 단순히 "링크한다/안 한다"가 아니라,…
CMake로 여러 타깃을 나눠 빌드하다 보면 "라이브러리는 분명히 링크했는데 헤더를 못 찾는다"는 에러를 자주 마주친다. 원인은 대부분 target_link_libraries의 PUBLIC/PRIVATE/INTERFACE 키워드를 잘못 골랐기 때문이다. 이 세 키워드는 단순히 "링크한다/안 한다"가 아니라,…
C++ 프로젝트가 파일 몇 개를 넘어서면 컴파일 명령이 금방 복잡해진다. 소스 파일이 여러 디렉터리에 흩어지고, 라이브러리를 따로 빌드해서 링크해야 하고, 리눅스에서는 GCC, macOS에서는 Clang, 윈도우에서는 MSVC를 각각 다르게 호출해야 한다.…
Cloudways는 관리형 호스팅이라 편하지만 트래픽이 늘면 비용이 빠르게 올라간다. 같은 사양의 순수 VPS로 옮기면 비용을 크게 줄일 수 있는데, 이 글은 Cloudways에서 운영 중인 WordPress를 Vultr VPS(Ubuntu 24.04 + Nginx…
Linux 커널을 소스에서 빌드하다 보면 tools/objtool을 컴파일하는 단계에서 gelf.h 헤더를 찾지 못해 빌드가 중단되는 경우가 있다. objtool은 커널 빌드 시 오브젝트 파일의 제어 흐름을 분석해 ORC unwinder 테이블 생성, retpoline/livepatch…
사용자를 sudo 그룹에 추가하거나, 특정 명령만 허용하는 세밀한 권한 설정 방법을 정리한다. sudo 그룹에 추가 가장 간단한 방법이다. 적용은 재로그인 이후부터다. sudo usermod -aG sudo username 현재 세션에서 즉시 반영하려면:…
Tailscale은 WireGuard 기반의 메시(mesh) VPN 도구다. 기존 VPN과 달리 중앙 게이트웨이 서버 없이 각 노드가 서로 직접 연결되는 P2P 구조라 속도가 빠르고 설정이 단순하다. 홈 서버, 라즈베리파이, 클라우드 인스턴스, 개발…
rar 확장자 파일은 unrar 명령을 통해 압축을 풀어야 한다. unrar 설치 # Ubuntu/Debian sudo apt install unrar # CentOS/RHEL/Fedora sudo yum install unrar # 또는 sudo dnf install unrar #…
라즈베리파이를 원격으로 제어하는 방법은 여러 가지가 있지만, NoMachine은 빠른 화면 전송 성능과 낮은 지연(latency), 쉬운 설정 덕분에 개발자나 시스템 엔지니어에게 좋은 선택이다. 특히 GUI 환경에서 디버깅하거나 IDE를 사용할 때 VNC보다…
아래는 (1) 커널 레시피만 Clang으로 빌드하는 방법과, (2) 배포판 전체를 Clang toolchain으로 전환하는 방법을 각각 “Yocto에서 실제로 적용 가능한 형태”로 정리한 것이다.핵심 변수/흐름은 Yocto의 toolchain/clang 체계와 meta-clang의 TOOLCHAIN 스위치에 기반한다.…
Clang/LLVM은 컴파일러 도구 체인을 구성하는 기술 묶음이다. LLVM: 컴파일러를 만들기 위한 공통 기반 인프라 Clang: LLVM 위에서 동작하는 C / C++ / Objective-C 컴파일러 프론트엔드 LLVM ? LLVM은 원래 Low…