下载交叉编译ptpd-ptpd-2.3.1源码downloads-yocto/ptpd-2.3.1.tar.gz./configure CCaarch64-zxic-linux-gcc提示编译链编译程序失败如下需要添加系统目录--sysroot/home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/aarch64-zxic-linuxchecking for gcc... aarch64-zxic-linux-gcc checking whether the C compiler works... no configure: error: in /home/wangyb/sda3/zm9300-tools/ptpd-2.3.1: configure: error: C compiler cannot create executables See config.log for more details configure:3582: checking whether the C compiler works configure:3604: aarch64-zxic-linux-gcc -O2 -pipe -g -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-stylegnu -Wl,--as-needed -fstack-protector-all -Wl,-z,relro,-z,now -fstack-protector-all -Wl,-z,relro,-z,now conftest.c 5 /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find Scrt1.o: No such file or directory /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find crti.o: No such file or directory /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find crtbeginS.o: No such file or directory /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find -lgcc /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find -lgcc_s /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find -lc /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find -lgcc /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find -lgcc_s /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find crtendS.o: No such file or directory /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find crtn.o: No such file or directory collect2: error: ld returned 1 exit status configure:3608: $? 1 configure:3646: result: no ./configure CCaarch64-zxic-linux-gcc -mcpucortex-a53crc -fstack-protector-all -pie -fPIE -Wformat -Wformat-security -Werrorformat-security -fstack-protector-all -pie -fPIE -Wformat -Wformat-security -Werrorformat-security --sysroot/home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/aarch64-zxic-linux提示不能运行编译链如下由于没有指定host平台默认是x86 gcc需要指定为arm平台--hostaarch64-zxic-linux配置成功后make编译完成后文件位置src/ptpd2checking whether we are cross compiling... configure: error: in /home/wangyb/sda3/zm9300-tools/ptpd-2.3.1: configure: error: cannot run C compiled programs. If you meant to cross compile, use --host. See config.log for more details 最终配置命令 ./configure CCaarch64-zxic-linux-gcc -mcpucortex-a53crc -fstack-protector-all -pie -fPIE -Wformat -Wformat-security -Werrorformat-security -fstack-protector-all -pie -fPIE -Wformat -Wformat-security -Werrorformat-security --sysroot/home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/aarch64-zxic-linux --hostaarch64-zxic-linux在IMX6板子上面运行ptpd2提示错误如下rootimx6qsabresd_genvict:~# ./ptpd2 -C -m -i eth0 2023-11-24 14:30:21.484399 ptpd2[6512].startup (info) (___) Configuration OK 2023-11-24 14:30:21.487152 ptpd2[6512].startup (info) (___) Successfully acquired lock on /var/run/ptpd2.lock 2023-11-24 14:30:21.487684 ptpd2[6512].startup (notice) (___) PTPDv2 started successfully on eth0 using masterslave preset (PID 6512) 2023-11-24 14:30:21.487775 ptpd2[6512].startup (info) (___) TimingService.PTP0: PTP service init 2023-11-24 14:30:21.491781 ptpd2[6512].eth0 (error) (init) failed to join the multicast group (strerror: No buffer space available) 2023-11-24 14:30:21.491880 ptpd2[6512].eth0 (error) (init) Failed to initialize network 2023-11-24 14:30:21.491943 ptpd2[6512].eth0 (error) (flt) PTPd init failed - will retry in 10 seconds查看源码src/dep/net.c函数netInitMulticastIPv4/* join multicast group (for receiving) on specified interface */ if (setsockopt(netPath-eventSock, IPPROTO_IP, IP_ADD_MEMBERSHIP, imr, sizeof(struct ip_mreq)) 0 || setsockopt(netPath-generalSock, IPPROTO_IP, IP_ADD_MEMBERSHIP, imr, sizeof(struct ip_mreq)) 0) { PERROR(failed to join the multicast group); return FALSE; }添加错误值打印int ret10; int ret20; ret1setsockopt(netPath-eventSock, IPPROTO_IP, IP_ADD_MEMBERSHIP, imr, sizeof(struct ip_mreq)); if(ret1 0){ printf(errno %d\n,errno); //105 printf(ret1%d\n,ret1); return FALSE; } ret2setsockopt(netPath-generalSock, IPPROTO_IP, IP_ADD_MEMBERSHIP, imr, sizeof(struct ip_mreq)); if(ret2 0){ printf(ret2%d\n,ret2); return FALSE; }setsockopt返回-1错误值105搜索系统头文件/usr/include/asm-generic/errno.h#define ENOBUFS 105 /* No buffer space available */通过网上搜到https://www.jianshu.com/p/6dfaeefac922UDP组播的内核参数为0导致问题修改10解决问题rootimx6qsabresd_genvict:~# sysctl net.ipv4.igmp_max_memberships net.ipv4.igmp_max_memberships 0 rootimx6qsabresd_genvict:~# rootimx6qsabresd_genvict:~# sysctl -w net.ipv4.igmp_max_memberships10 net.ipv4.igmp_max_memberships 10查看其他平台是设置的参数20所以没有这个问题。
ptpd2提示failed to join the multicast group (strerror: No buffer space available)
下载交叉编译ptpd-ptpd-2.3.1源码downloads-yocto/ptpd-2.3.1.tar.gz./configure CCaarch64-zxic-linux-gcc提示编译链编译程序失败如下需要添加系统目录--sysroot/home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/aarch64-zxic-linuxchecking for gcc... aarch64-zxic-linux-gcc checking whether the C compiler works... no configure: error: in /home/wangyb/sda3/zm9300-tools/ptpd-2.3.1: configure: error: C compiler cannot create executables See config.log for more details configure:3582: checking whether the C compiler works configure:3604: aarch64-zxic-linux-gcc -O2 -pipe -g -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-stylegnu -Wl,--as-needed -fstack-protector-all -Wl,-z,relro,-z,now -fstack-protector-all -Wl,-z,relro,-z,now conftest.c 5 /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find Scrt1.o: No such file or directory /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find crti.o: No such file or directory /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find crtbeginS.o: No such file or directory /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find -lgcc /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find -lgcc_s /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find -lc /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find -lgcc /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find -lgcc_s /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find crtendS.o: No such file or directory /home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/x86_64-zxic-linux/usr/libexec/aarch64-zxic-linux/gcc/aarch64-zxic-linux/9.3.0/real-ld: cannot find crtn.o: No such file or directory collect2: error: ld returned 1 exit status configure:3608: $? 1 configure:3646: result: no ./configure CCaarch64-zxic-linux-gcc -mcpucortex-a53crc -fstack-protector-all -pie -fPIE -Wformat -Wformat-security -Werrorformat-security -fstack-protector-all -pie -fPIE -Wformat -Wformat-security -Werrorformat-security --sysroot/home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/aarch64-zxic-linux提示不能运行编译链如下由于没有指定host平台默认是x86 gcc需要指定为arm平台--hostaarch64-zxic-linux配置成功后make编译完成后文件位置src/ptpd2checking whether we are cross compiling... configure: error: in /home/wangyb/sda3/zm9300-tools/ptpd-2.3.1: configure: error: cannot run C compiled programs. If you meant to cross compile, use --host. See config.log for more details 最终配置命令 ./configure CCaarch64-zxic-linux-gcc -mcpucortex-a53crc -fstack-protector-all -pie -fPIE -Wformat -Wformat-security -Werrorformat-security -fstack-protector-all -pie -fPIE -Wformat -Wformat-security -Werrorformat-security --sysroot/home/wangyb/sda3/zm9300c-V2XR260010/toolchain/sysroots/aarch64-zxic-linux --hostaarch64-zxic-linux在IMX6板子上面运行ptpd2提示错误如下rootimx6qsabresd_genvict:~# ./ptpd2 -C -m -i eth0 2023-11-24 14:30:21.484399 ptpd2[6512].startup (info) (___) Configuration OK 2023-11-24 14:30:21.487152 ptpd2[6512].startup (info) (___) Successfully acquired lock on /var/run/ptpd2.lock 2023-11-24 14:30:21.487684 ptpd2[6512].startup (notice) (___) PTPDv2 started successfully on eth0 using masterslave preset (PID 6512) 2023-11-24 14:30:21.487775 ptpd2[6512].startup (info) (___) TimingService.PTP0: PTP service init 2023-11-24 14:30:21.491781 ptpd2[6512].eth0 (error) (init) failed to join the multicast group (strerror: No buffer space available) 2023-11-24 14:30:21.491880 ptpd2[6512].eth0 (error) (init) Failed to initialize network 2023-11-24 14:30:21.491943 ptpd2[6512].eth0 (error) (flt) PTPd init failed - will retry in 10 seconds查看源码src/dep/net.c函数netInitMulticastIPv4/* join multicast group (for receiving) on specified interface */ if (setsockopt(netPath-eventSock, IPPROTO_IP, IP_ADD_MEMBERSHIP, imr, sizeof(struct ip_mreq)) 0 || setsockopt(netPath-generalSock, IPPROTO_IP, IP_ADD_MEMBERSHIP, imr, sizeof(struct ip_mreq)) 0) { PERROR(failed to join the multicast group); return FALSE; }添加错误值打印int ret10; int ret20; ret1setsockopt(netPath-eventSock, IPPROTO_IP, IP_ADD_MEMBERSHIP, imr, sizeof(struct ip_mreq)); if(ret1 0){ printf(errno %d\n,errno); //105 printf(ret1%d\n,ret1); return FALSE; } ret2setsockopt(netPath-generalSock, IPPROTO_IP, IP_ADD_MEMBERSHIP, imr, sizeof(struct ip_mreq)); if(ret2 0){ printf(ret2%d\n,ret2); return FALSE; }setsockopt返回-1错误值105搜索系统头文件/usr/include/asm-generic/errno.h#define ENOBUFS 105 /* No buffer space available */通过网上搜到https://www.jianshu.com/p/6dfaeefac922UDP组播的内核参数为0导致问题修改10解决问题rootimx6qsabresd_genvict:~# sysctl net.ipv4.igmp_max_memberships net.ipv4.igmp_max_memberships 0 rootimx6qsabresd_genvict:~# rootimx6qsabresd_genvict:~# sysctl -w net.ipv4.igmp_max_memberships10 net.ipv4.igmp_max_memberships 10查看其他平台是设置的参数20所以没有这个问题。