FreeBSD에서 데비안 프로그램을 컴파일하기 위한 가이드를 따르려고 합니다. 다음 메이크파일이 있습니다.
obj-m += kernelinfo.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
/lib/modules
내 컴퓨터에 폴더가 없기 때문에 FreeBSD에서 이것을 컴파일하는 방법이 혼란스럽습니다 . FreeBSD의 모든 기본 헤더를 디렉토리에 설치했지만 /usr/src/
모듈 폴더를 찾을 수 없습니다. Makefile을 FreeBSD용으로 번역해야 할 것 같습니다. 비록 제가 Linux를 처음 접하는 사람이라 잘 모르겠습니다. 어떤 도움이라도 대단히 감사하겠습니다.
답변1
이는 Linux 커널 모듈에서 나오는 것처럼 보입니다. Linux 커널 모듈과 관련된 코드는 Linux용으로 특별히 작성되었기 때문에 FreeBSD에서 컴파일하거나 사용하지 못할 수 있으며, Linux 커널은 FreeBSD 커널과 완전히 다릅니다.
간단히 말해서 번역해야 할 것은 Makefile이 아니라 FreeBSD로 이식해야 하는 커널 모듈 소스 코드입니다. 이는 간단한 작업이 아니며 Linux 및 FreeBSD 커널에 대한 지식이 필요합니다.
당신은 또한 볼 수 있습니다Linux와 (무료) BSD 커널 간의 개념적 차이점
답변2
완전성을 기하기 위해 $(shell ...)
이 예제의 구성을 bmake가 이해할 수 있는 것으로 변환하는 가장 쉬운 방법은 make가 아닌 쉘에 의해 해석되는 서브쉘로 대체하는 것입니다. 특히, 다음과 같이 교체할 수 있습니다.
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
그리고
clean:
make -C /lib/modules/$$(uname -r)/build M=$(PWD) clean