DPDK编译错误 error: Permission denied与RTE_MAX_LCORE undeclared here (not in a function) 解决方法

目录

一、报错

二、解决问题 

1、添加dpdk目录权限

2、svn添加权限


本文讲解DPDK编译错误Permission denied与RTE_MAX_LCORE undeclared here (not in a function) 解决方法。

一、报错

将windows版可以调试通编译没有问题的dpdk代码文件上传到svn服务器后,在linux下编译dpdk时,就会遇到“Permission denied”的问题,具体如下所示。

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

二、解决问题 

1、添加dpdk目录权限

通过为dpdk目录添加权限解决问题,chmod 是用于修改文件或目录权限的命令;-R 表示递归操作,即对指定目录及其下所有子目录和文件都进行权限修改;777 代表权限设置,第一个 7 针对文件所有者,第二个 7 针对所属组,第三个 7 针对其他用户,都赋予读、写、执行权限,具体命令如下所示。

chmod -R +777 ./dpdk1-1.7

再次编译后,报错“error: "RTE_MAX_LCORE" is not defined”,详细的错误信息如下所示。

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

2、svn添加权限

遇到这个问题,需要使用svn将文件可执行权限添加,否则svn目录再次下载后依然遇到这个问题。接下来为 dpdk-1.7/ 目录及其下的文件设置 svn:executable 属性,使这些文件在从 SVN 仓库检出到本地时具有可执行权限。具体执行如下命令

svn propset svn:executable on dpdk-1.7/

参数的具体含义如下所示: 

  • svn:这是 Subversion 版本控制系统的命令行工具,用于与 SVN 仓库进行交互,执行如提交、更新、查看日志等操作。
  • propset:是 svn 命令的一个子命令,代表 “property set”,用于设置文件或目录的属性。在 SVN 中,属性是与文件或目录关联的键值对,可用于存储额外的元数据。
  • svn:executable:这是 SVN 预定义的一个属性,用于标记文件是否具有可执行权限。当设置此属性后,从 SVN 仓库检出文件时,文件会被赋予相应的可执行权限。
  • on:表示将 svn:executable 属性的值设置为 “开启” 状态,意味着文件具有可执行权限。
  • dpdk - 1.7/:指定要设置属性的目标对象,这里是一个名为 dpdk - 1.7 的目录。该命令会对该目录下的所有文件递归地设置 svn:executable 属性。

发现不让直接添加目录权限, 于是我进入出现问题的脚本目录,增加权限,具体操作如下所示。

cd scripts/
svn propset svn:executable on *

然后执行如下命令,发现文件权限已被更改。

svn diff

接下来再次提交回svn服务器即可。

 svn ci -m "fix svn:executable for dpdk1.7" dpdk-1.7/

接下来删除dpdk目录中build子目录,然后重新编译即可不报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mooyuan天天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值