LinuxPTP를 테스트하는 데 도움이 되는 스크립트를 컴파일하려고 합니다. testptp.c 파일은 이를 수행하는 데 도움이 되는 스크립트입니다. 이는 Linux 커널에 내장되어 있습니다. 그러나 나는 그것을 컴파일할 수 없습니다. 나 뿐인가요? 이 유틸리티 스크립트에 대해 많은 사람들이 이야기하는 것을 보았지만 제가 본 유일한 온라인 튜토리얼은 다음과 같습니다.https://docs.nvidia.com/networking/display/NVIDIA5TTechnologyUserManualv10/Testptp
gcc를 사용하여 testptp.c를 컴파일하라고 지시합니다. testptp.c만 있는 디렉토리에서 다음 명령을 사용하여 컴파일합니다 gcc testptp.c -o testptp
. 또한 git에서 Linux 커널을 가져와서 실행 tools/testing/selftests/ptp
했습니다 make
. 둘 다 동일한 결과를 생성합니다.
이것은 내 결과입니다.
Makefile:10: warning: overriding recipe for target 'clean'
../lib.mk:130: warning: ignoring old recipe for target 'clean'
gcc -I../../../../usr/include/ testptp.c -lrt -o testptp
testptp.c: In function ‘main’:
testptp.c:295:15: error: ‘struct ptp_clock_caps’ has no member named ‘adjust_phase’
295 | caps.adjust_phase);
| ^
testptp.c:429:28: error: ‘PTP_PEROUT_DUTY_CYCLE’ undeclared (first use in this function)
429 | perout_request.flags |= PTP_PEROUT_DUTY_CYCLE;
| ^~~~~~~~~~~~~~~~~~~~~
testptp.c:429:28: note: each undeclared identifier is reported only once for each function it appears in
testptp.c:430:18: error: ‘struct ptp_perout_request’ has no member named ‘on’
430 | perout_request.on.sec = pulsewidth / NSEC_PER_SEC;
| ^
testptp.c:431:18: error: ‘struct ptp_perout_request’ has no member named ‘on’
431 | perout_request.on.nsec = pulsewidth % NSEC_PER_SEC;
| ^
testptp.c:434:28: error: ‘PTP_PEROUT_PHASE’ undeclared (first use in this function); did you mean ‘PTP_PEROUT_REQUEST’?
434 | perout_request.flags |= PTP_PEROUT_PHASE;
| ^~~~~~~~~~~~~~~~
| PTP_PEROUT_REQUEST
testptp.c:435:18: error: ‘struct ptp_perout_request’ has no member named ‘phase’
435 | perout_request.phase.sec = perout_phase / NSEC_PER_SEC;
| ^
testptp.c:436:18: error: ‘struct ptp_perout_request’ has no member named ‘phase’
436 | perout_request.phase.nsec = perout_phase % NSEC_PER_SEC;
| ^
make: *** [<builtin>: testptp] Error 1
저는 우분투 20.04를 실행하고 있습니다. Linux 커널 버전: 5.15.0-53-generic
이것이 다른 누구에게도 유용할까요?
답변1
/usr/include/linux/ptp_clock.h
파일 덮어쓰기엘나를 위해 일하는 것 같습니다.