[입 개발] rclone mount 빌드 방법

어쩌다보니 rclone 이라는 프로젝트를 윈도우에서 빌드해야할 일이 생겼습니다.

rclone/rclone: “rsync for cloud storage” – Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Yandex Files (github.com)

그냥 소스를 다음과 같이 받아서 go build 만 하면 짠하고 빌드가 나옵니다.

git clone https://github.com/rclone/rclone
cd rclone
go build

그런데 이렇게 빌드를 하고 나면 해당 외부 스토리즈를 로컬로 mount 하는 mount 기능이 빠져있습니다. 그래서 간단하게 mount 기능 까지 포함해서 어떻게 빌드 하는지를 정리합니다.

먼저 mount 기능이 fuse 를 사용하기 때문에, cgofuse(billziss-gh/cgofuse: Cross-platform FUSE library for Go – Works on Windows, macOS, Linux, FreeBSD, NetBSD, OpenBSD (github.com)) 를 설치해야 합니다. 그리고 cgofuse 는 다시 winfsp 에 의존성이 있습니다. (billziss-gh/winfsp: Windows File System Proxy – FUSE for Windows (github.com))

이 의존성 때문에 winfsp의 설치가 먼저 필요합니다. 그런데 이름에서 부터 알수 있듯이 cgofuse 는 cgo를 씁니다. 그럼 c 코드를 뭔가 사용하는데 winfsp의 경우 꼭 풀 설치로 헤더와 라이브러리가 모두 설치되어야만 cgofuse 가 설치가 됩니다.

그리고 cgofuse가 컴파일러가 필요하기 때문에 mingw64 를 설치할 필요가 있습니다. (http://mingw-w64.org/doku.php/download/mingw-builds) 여기서 받아서 설치해줍니다.

이렇게 설치를 하고 mingw64의 gcc 가 있는 경로를 Path에 추가해 줍니다.

그렇게 잘 설치되었다면 다음으로 가볍게 빌드가 성공하게 됩니다.

set CPATH=C:\Program Files (x86)\WinFsp\inc\fuse
go build -tags cmount

이제 결과물을 잘 실행해보면 됩니다.