WSL / Ubuntu - /usr/include/linux/types.h:5:10: fatal error: 'asm/types.h' file not found
WSL 환경에서 헤더 파일을 못 찾는 컴파일 오류가 발생한다면?
// WSL 2 + Ubuntu 20.04
/usr/include/linux/types.h:5:10: fatal error: 'asm/types.h' file not found
원래는 "linux-headers..."를 설치하면 된다고 하는데 WSL 환경인 경우 apt repo에 등록되지 않아 설치가 안 됩니다.
$ uname -r
5.15.153.1-microsoft-standard-WSL2
$ sudo apt install linux-headers-`uname -r`
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package linux-headers-5.15.153.1-microsoft-standard-WSL2
E: Couldn't find any package by glob 'linux-headers-5.15.153.1-microsoft-standard-WSL2'
검색해 보면 WSL2-Linux-Kernel를 빌드해 구할 수 있다고 하는데요,
cant install linux headers on kali running on wsl kernel #1253
; https://github.com/MicrosoftDocs/WSL/issues/1253
보니까, 제가 설치한 Ubuntu 20.04의 경우에는 커널 헤더를 포함하고 있어 빌드할 필요가 없습니다.
$ ll /usr/include/x86_64-linux-gnu/asm/types.h
-rw-r--r-- 1 root root 31 Aug 29 21:06 /usr/include/x86_64-linux-gnu/asm/types.h
따라서 그냥 링크만 거는 것으로 해결할 수 있습니다.
$ sudo ln -s /usr/include/x86_64-linux-gnu/asm /usr/include/asm
테스트를 위해 Kali 리눅스를 WSL에 설치했더니 /usr/include 디렉터리가 거의 비어 있는 수준입니다.
$ ll /usr/include
total 16
drwxr-xr-x 2 root root 4096 Jun 5 10:20 iproute2
-rw-r--r-- 1 root root 11959 Mar 12 2024 sudo_plugin.h
(아마도 Ubuntu도 그랬을 것 같은데요) 대신 build-essential만 설치하면,
$ sudo apt update && sudo apt upgrade -y
$ sudo apt install build-essential
이후 커널 관련 헤더가 설치되었습니다.
$ ll /usr/include/x86_64-linux-gnu
total 52
-rw-r--r-- 1 root root 4351 Jun 11 05:25 a.out.h
drwxr-xr-x 2 root root 4096 Sep 10 23:14 asm
drwxr-xr-x 4 root root 12288 Sep 10 23:14 bits
drwxr-xr-x 3 root root 4096 Sep 10 23:14 c++
-rw-r--r-- 1 root root 3553 Jun 11 05:25 fpu_control.h
drwxr-xr-x 2 root root 4096 Sep 10 23:14 gnu
-rw-r--r-- 1 root root 4916 Jun 11 05:25 ieee754.h
drwxr-xr-x 2 root root 4096 Sep 10 23:15 openssl
drwxr-xr-x 3 root root 4096 Sep 10 23:14 sys
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]