프로필사진

Go, Vantage point

가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.


Github | https://github.com/overnew/

Blog | https://everenew.tistory.com/





티스토리 뷰

반응형

 

 

 

 

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/

 

Ubuntu - kernel 업데이트하는 방법 (manually)

Ubuntu에서 apt를 이용하여 커널을 설치하는 방법을 소개합니다. 보통 Software & updates 프로그램으로 최신 커널로 업데이트할 수 있습니다. 하지만 직접 터미널로 커널을 설치할 수도 있습니다. 또한

codechacha.com

 

 

 

 

 

다음 명령어로 설치 가능한 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 명령어로 정상적으로 컴파일이 되는 것을 확인할 수 있다.

 

 

 

반응형
댓글
반응형
인기글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함