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

博主将Windows文件上传到SVN服务器后,在Linux下编译DPDK遇到权限和未定义标识符等错误。添加权限后仍有问题,解决办法一是删除dpdk目录中build子目录后重新编译;二是使用svn添加文件可执行权限,提交回SVN服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、报错

二、解决问题 

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子目录,然后重新编译即可不报错

要在Ubuntu 18.04上安装Android Studio,您可以按照以下步骤进行操作: 1. 首先,您需要下载Android Studio的安装包。您可以在Android开发者官网的下载页面\[3\]上找到安装包的下载链接。下载完成后,将安装包保存在您喜欢的位置。 2. 打开终端,并导航到您保存安装包的目录。您可以使用cd命令来切换目录。 3. 解压安装包。在终端中运行以下命令: ``` tar -zxf android-studio-2022.1.1.19-linux.tar.gz ``` 4. 进入解压后的Android Studio目录。在终端中运行以下命令: ``` cd android-studio ``` 5. 运行Android Studio安装程序。在终端中运行以下命令: ``` ./studio.sh ``` 6. 安装程序将启动Android Studio的安装向导。按照向导的指示进行操作,包括接受许可协议、选择安装路径等。 7. 安装完成后,您可以在应用程序菜单中找到Android Studio的图标。您还可以通过在终端中运行以下命令来启动Android Studio: ``` android-studio ``` 请注意,上述步骤中的路径和命令是根据提供的引用内容\[1\]和\[2\]进行的推断。确保您根据您自己的实际情况进行相应的调整。 #### 引用[.reference_title] - *1* *2* *3* [Ubuntu18.04下安装配置AndroidStudio软件图文教程](https://blog.youkuaiyun.com/xqf222/article/details/128803700)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

mooyuan天天

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

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

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

打赏作者

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

抵扣说明:

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

余额充值