[Linux] procfs, procseq 컴파일 에러 (error: variable '' has initializer but incomplete type)
Linux에서 procfs와 procseq 관련 C언어 소스코드를 컴파일하면 다음과 같은 오류가 발생할 때가 있다.
error: variable 'proc_ops' has initializer but incomplete type
해당 오류를 문법적인 문제라 생각했는데, 사실 Linux 커널에서 procfs와 procseq를 위해 사용하는 proc_ops는 버전에 따라 사용이 가능하다.
출처: https://embetronicx.com/tutorials/linux/device-drivers/procfs-in-linux/
위의 답글에 따르면 Linux 커널의 버전이 5.5 이상에서만 struct proc_ops 를 사용할 수 있다고 안내되어 있다.
다음의 명령어로 본인의 linux 커널 버전을 확인해보니, 5.4.~ 버전으로 확인되었다.
$ uname -r
따라서 5.5 이상의 버전을 새로 설치해주자.
참조: https://codechacha.com/ko/ubuntu-update-kerenl/
다음 명령어로 설치 가능한 5.5... 버전 이상의 리눅스 커널을 설치해주자.
$ sudo apt-cache search linux-image-5.
본인의 경우는 5.8.0-63 버전을 설치했다.
설치 재부팅을 하더라도 build가 설치되지 않아 다음과 같은 에러가 발생할 수 있다.
/lib/modules/<version>/build/ not existent
이때는 커널 버전에 맞는 linux header를 설치하고 재부팅 해주자.
apt install linux-headers-5.8.0-63-generic
이제 make 명령어로 정상적으로 컴파일이 되는 것을 확인할 수 있다.