[c++] libusb의 설치 및 설정

libusb는 USB 장치를 다루는 데 사용되는 라이브러리로, C/C++로 개발된 프로그램에서 USB 장치와 통신할 때 유용하게 활용됩니다.

libusb 설치

libusb를 사용하기 위해서는 먼저 라이브러리를 설치해야 합니다. 대부분의 리눅스 배포판에서는 패키지 매니저를 통해 libusb를 설치할 수 있습니다. 예를 들어, Ubuntu에서는 다음과 같이 설치할 수 있습니다:

sudo apt-get install libusb-1.0-0-dev

macOS에서는 Homebrew를 사용하여 libusb를 설치할 수 있습니다:

brew install libusb

Windows에서는 libusb의 바이너리 파일을 다운로드하여 수동으로 설치해야 합니다.

libusb 프로젝트 설정

CMake 또는 Makefile을 사용하여 libusb를 포함시키는 방법에 대해 살펴보겠습니다.

CMake를 사용하는 경우

cmake_minimum_required(VERSION 3.5)
project(my_project)
find_package(libusb-1.0 REQUIRED)
include_directories(${LIBUSB_1_INCLUDE_DIRS})
target_link_libraries(my_project ${LIBUSB_1_LIBRARIES})

Makefile을 사용하는 경우

Makefile에서 libusb를 사용하려면 다음과 같이 컴파일 및 링크 단계에 libusb를 추가해야 합니다:

my_project: my_project.o
	gcc -o my_project my_project.o -lusb-1.0

my_project.o: my_project.c
	gcc -c -o my_project.o my_project.c

libusb 사용 예제

아래는 libusb를 사용하여 USB 장치와 통신하는 간단한 예제 코드입니다. 이 예제는 USB 장치로부터 제조자와 제품명을 읽어오는 기능을 하는 예제입니다.

#include <stdio.h>
#include <libusb-1.0/libusb.h>

int main() {
    libusb_context *ctx = NULL;
    libusb_init(&ctx);
    libusb_device **list;
    ssize_t cnt = libusb_get_device_list(ctx, &list);
    if (cnt < 0) {
        fprintf(stderr, "Error getting device list\n");
        return 1;
    }
    for (ssize_t i = 0; i < cnt; i++) {
        libusb_device *dev = list[i];
        struct libusb_device_descriptor desc;
        libusb_get_device_descriptor(dev, &desc);
        printf("Vendor ID: 0x%04x, Product ID: 0x%04x\n", desc.idVendor, desc.idProduct);
    }
    libusb_free_device_list(list, 1);
    libusb_exit(ctx);
    return 0;
}

마치며

libusb를 설치하고 설정한 후에는 USB 장치와 손쉽게 통신할 수 있게 됩니다. 이러한 라이브러리를 활용하여 USB 기반의 장치와 소프트웨어 간에 데이터를 교환하는 다양한 프로젝트를 구현할 수 있습니다.

더 많은 정보는 libusb 공식 웹사이트에서 확인할 수 있습니다.