将windows文件上传到svn服务器后,在linux下编译dpdk遇到问题:
make[1]: execvp: dpdk-1.7/scripts/relpath.sh: Permission denied make[1]: execvp: dpdk-1.7/scripts/relpath.sh: Permission denied /bin/sh: line 1: dpdk-1.7/scripts/gen-build-mk.sh: Permission denied make[1]: [ dpdk-1.7/build/Makefile] Error 126 make: [config] Error 2 /bin/sh: line 1: dpdk-1.7/scripts/depdirs-rule.sh: Permission denied make[7]: [depdirs] Error 126 make[6]: [depdirs] Error 2 make[5]: * [depdirs] Error 2 /bin/sh: line 1: dpdk-1.7/scripts/depdirs-rule.sh: Permission denied
然后我将dpdk目录添加权限
chmod -R +777 ./dpdk1-1.7
再次编译后,错误如下
In file included from dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c:61: dpdk-1.7/build/include/rte_eal.h:76: error: RTE_MAX_LCORE undeclared here (not in a function) In file included from dpdk-1.7/build/include/rte_rwlock.h:54, from dpdk-1.7/build/include/rte_eal_memconfig.h:41, from dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c:62: dpdk-1.7/build/include/rte_atomic.h:54:5: error: "RTE_MAX_LCORE" is not defined In file included from dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c:62: dpdk-1.7/build/include/rte_eal_memconfig.h:82: error: RTE_MAX_MEMSEG undeclared here (not in a function) dpdk-1.7/build/include/rte_eal_memconfig.h:83: error: RTE_MAX_MEMZONE undeclared here (not in a function) dpdk-1.7/build/include/rte_eal_memconfig.h:88: error: RTE_MAX_TAILQ undeclared here (not in a function) dpdk-1.7/build/include/rte_eal_memconfig.h:91: error: RTE_MAX_NUMA_NODES undeclared here (not in a function) dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c: In function eal_parse_sysfs_value dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c:177: error: RTE_LOG_LEVEL undeclared (first use in this function) dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c:177: error: (Each undeclared identifier is reported only once dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c:177: error: for each function it appears in.) dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c: In function eal_proc_type_detect dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c:285: error: RTE_LOG_LEVEL undeclared (first use in this function) dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c: In function eal_parse_coremask dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c:447: error: RTE_LOG_LEVEL undeclared (first use in this function) dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c: In function eal_parse_socket_mem dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c:520: error: RTE_LOG_LEVEL undeclared (first use in this function) cc1: warnings being treated as errors dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c: In function eal_parse_args dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c:721: error: RTE_LOG_LEVEL undeclared (first use in this function) dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c: In function eal_check_mem_on_local_socket dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c:963: error: RTE_LOG_LEVEL undeclared (first use in this function) dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c: In function 鈥榬te_eal_init dpdk-1.7/lib/librte_eal/linuxapp/eal/eal.c:1037: error: RTE_LOG_LEVEL undeclared (first use in this function) make[5]: [eal.o] Error 1 make[4]: [eal] Error 2 make[3]: [linuxapp] Error 2 make[2]: [librte_eal] Error 2 make[1]: [lib] Error 2 make: [all] Error 2
解决办法
1.删除dpdk目录中build子目录,然后重新编译即可
2.遇到这个问题,需要使用svn将文件可执行权限添加,否则svn目录再次下载后依然遇到这个问题
执行如下命令
svn propset svn:executable on dpdk-1.7/
发现不让直接添加目录权限
于是我进入出现问题的脚本目录,
cd scripts/ svn propset svn:executable on * 然后执行如下命令,发现文件权限已被更改 svn diff
接下来再次提交回svn服务器即可 svn ci -m "fix svn:executable for dpdk1.7" dpdk-1.7/