解决编译thrift时报错的问题

本文主要介绍了在编译Thrift时遇到的两个错误:在make时和make install时的报错。针对错误1,文章指出在执行make之前需要配置参数,如使用'./configure --prefix=/usr/local/ --with-php=no --with-boost=/usr/local CXXFLAGS="-g -O2"'。接着再执行make和make install以解决mkdir权限问题。

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

错误1(在make时报错):

make[4]: Entering directory `/home/yantze/dl/thrift/lib/cpp/test'
Makefile:1189: gen-cpp/.deps/ChildService.Plo: No such file or directory
Makefile:1190: gen-cpp/.deps/DebugProtoTest_types.Plo: No such file or directory
Makefile:1191: gen-cpp/.deps/EmptyService.Plo: No such file or directory
Makefile:1192: gen-cpp/.deps/EnumTest_types.Plo: No such file or directory
Makefile:1193: gen-cpp/.deps/OptionalRequiredTest_types.Plo: No such file or directory
Makefile:1194: gen-cpp/.deps/ParentService.Plo: No such file or directory
Makefile:1195: gen-cpp/.deps/Recursive_types.Plo: No such file or directory
Makefile:1196: gen-cpp/.deps/ThriftTest_constants.Plo: No such file or directory
Makefile:1197: gen-cpp/.deps/ThriftTest_types.Plo: No such file or directory
Makefile:1198: gen-cpp/.deps/TypedefTest_types.Plo: No such file or directory
Makefile:1199: gen-cpp/.deps/proc_types.Plo: No such file or directory
make[4]: *** No rule to make target `gen-cpp/.deps/proc_types.Plo'.  Stop.

错误2(在make install时报错):

mkdir: /usr/lib/php/Thrift: Operation not permitted


先这样configure

./configure --prefix=/usr/local/ --with-php=no --with-boost=/usr/local CXXFLAGS="-g -O2"


然后再make,make install


<think>好的,用户之前问过如何检查Python库版本,现在他想在VMware 16里安装Ubuntu 18.04 LTS并配置P4编程环境的开发环境,需要详细步骤和每行命令的注释。我需要先理清整个流程,确保步骤正确,同考虑用户可能的需求和潜在的问题。 首先,用户可能不太熟悉VMware的操作,所以安装Ubuntu的步骤需要详细,包括创建虚拟机、选择配置、安装过程等。然后配置Ubuntu系统,可能包括更新软件源、安装必要工具,比如git、curl等。 接下来是安装P4的相关工具,比如BMv2、PI、p4c等。这部分需要确保依赖项的安装,比如安装g++、cmake、protobuf等。用户可能需要知道每个命令的作用,所以注释要清楚,比如解释为什么需要安装某些包。 然后配置环境变量,可能需要修改.bashrc文件,用户可能不熟悉如何正确设置PATH。同,测试环境的候,给出一个简单的P4示例,编译和运行,并解释每个步骤的意义,确保用户能验证安装是否成功。 用户可能遇到的问题包括依赖项安装失败、权限问题、环境变量未正确设置等。需要在步骤中提醒用户注意,比如使用sudo,或者遇到错误如何解决。例如,如果bmv2启动失败,可能需要检查thrift的版本或者其他依赖是否正确安装。 此外,用户可能对P4开发环境不太熟悉,可能需要推荐一些学习资源,比如官方教程或者参考书籍,帮助他们进一步学习。同,提醒用户如果使用不同的Ubuntu版本,可能需要注意依赖项的版本差异。 需要确保所有命令都适用于Ubuntu 18.04,因为不同版本的包管理可能会有差异。比如,使用apt-get安装的包名是否正确,是否需要添加特定的PPA源等。例如,Ubuntu 18.04默认的Python版本是3.6,而某些P4工具可能需要更高版本,这候需要指导用户如何安装Python3.8,并配置alternatives。 另外,安装mininet的候,是否需要从源码编译还是通过apt安装,需要确认步骤的正确性。同,安装PI和BMv2,可能需要克隆特定的仓库版本,以确保兼容性。 最后,总结步骤,检查是否每个部分都有详细的注释,确保用户能够理解每个命令的作用,避免出现困惑。同,检查是否有遗漏的步骤,比如安装依赖项或者配置环境变量等。</think>以下是在 VMware 16 中安装 Ubuntu 18.04 LTS 并配置 P4 编程语言开发环境的详细步骤,包含命令注释和注意事项: --- ### **一、VMware 中安装 Ubuntu 18.04 LTS** #### **1. 创建虚拟机** - 打开 VMware Workstation 16 → 选择“创建新的虚拟机” - 选择“典型”配置 → 选择 Ubuntu 18.04 ISO 镜像文件 - 设置虚拟机名称和存储路径(建议至少 **20GB 磁盘空间**) - 点击“完成”开始安装 #### **2. 安装 Ubuntu 系统** - 启动虚拟机后,选择语言 → 点击“安装 Ubuntu” - 选择“最小化安装”(节省资源)→ **取消勾选“下载更新”**(避免网络问题) - 分区选择默认设置 → 设置用户名和密码(建议简单密码如 `p4`) - 等待安装完成 → 重启虚拟机 --- ### **二、配置 Ubuntu 系统基础环境** #### **1. 更新系统软件源** ```bash sudo apt-get update # 更新软件包列表 sudo apt-get upgrade -y # 升级已安装的软件包 sudo apt-get autoremove # 清理无用依赖 ``` #### **2. 安装必要工具** ```bash sudo apt-get install -y git curl wget vim net-tools build-essential \ python3.8 python3.8-dev python3-pip # 安装开发工具和 Python 3.8 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1 # 保留系统默认 Python3.6 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 2 # 添加 Python3.8 ``` --- ### **三、安装 P4 开发工具链** #### **1. 安装依赖库** ```bash sudo apt-get install -y automake cmake libtool libgmp-dev \ libpcap-dev libboost-dev libboost-test-dev libboost-program-options-dev \ libboost-system-dev libboost-filesystem-dev libboost-thread-dev \ libevent-dev libjudy-dev flex bison pkg-config g++ libssl-dev \ libnanomsg-dev libreadline-dev libprotobuf-dev protobuf-compiler # 安装编译依赖项 ``` #### **2. 安装 Mininet(网络仿真工具)** ```bash git clone git://github.com/mininet/mininet # 克隆 Mininet 仓库 cd mininet git checkout -b 2.3.0 # 切换到稳定版本 util/install.sh -n # 安装 Mininet(-n 表示不安装 Open vSwitch) ``` #### **3. 安装 BMv2(P4 软件交换机)** ```bash git clone --recursive https://github.com/p4lang/behavioral-model # 克隆 BMv2 仓库 cd behavioral-model ./autogen.sh # 生成配置脚本 ./configure # 检查系统环境 make -j4 # 多线程编译(4 线程) sudo make install # 安装到系统目录 sudo ldconfig # 更新共享库缓存 ``` #### **4. 安装 PI(Protocol-Independent 库)** ```bash git clone https://github.com/p4lang/PI # 克隆 PI 仓库 cd PI git submodule update --init --recursive # 初始化子模块 ./autogen.sh ./configure make -j4 sudo make install sudo ldconfig ``` #### **5. 安装 P4 编译器(p4c)** ```bash git clone --recursive https://github.com/p4lang/p4c # 克隆 p4c 编译器 cd p4c mkdir build && cd build cmake .. # 生成构建配置 make -j4 sudo make install ``` --- ### **四、配置环境变量** #### **1. 编辑 `.bashrc` 文件** ```bash vim ~/.bashrc # 在文件末尾添加以下内容: export PATH=$PATH:/usr/local/bin # 添加 P4 工具路径 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib # 添加库路径 ``` #### **2. 使配置生效** ```bash source ~/.bashrc # 重新加载环境变量 ``` --- ### **五、验证安装** #### **1. 测试 BMv2** ```bash sudo simple_switch --version # 应输出版本信息(如 "BMv2 simple_switch") ``` #### **2. 测试 P4 编译器** ```bash p4c --version # 应显示 "p4c 版本号" ``` #### **3. 运行示例 P4 程序** ```bash git clone https://github.com/p4lang/tutorials # 克隆官方教程 cd tutorials/exercises/basic make # 编译 P4 程序 sudo ./run.sh # 启动 Mininet 和交换机 ``` --- ### **六、常见问题解决** #### **1. 编译报错“依赖缺失”** - 检查是否安装了所有依赖项(参考步骤三.1) - 确保 `sudo ldconfig` 已执行 #### **2. BMv2 启动失败** ```bash sudo sysctl vm.nr_hugepages=2048 # 分配大页内存(BMv2 需要) ``` #### **3. Mininet 无法连接控制器** ```bash sudo mn --test pingall # 测试 Mininet 基础网络 ``` --- ### **七、总结** | **步骤** | **关键操作** | |------------------------|-------------------------------------------------| | 安装 Ubuntu 18.04 | 最小化安装,配置 Python 3.8 | | 安装 P4 工具链 | BMv2、PI、p4c 需按顺序编译安装 | | 环境变量配置 | 确保 `PATH` 和 `LD_LIBRARY_PATH` 正确 | | 验证与调试 | 通过官方教程测试完整开发流程 | 建议参考 [P4 官方文档](https://p4.org/) 和《P4 编程实战》进一步学习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值