make -j `getconf _NPROCESSORS_ONLN` deb-pkg之后dpkg-buildpackage: 错误: debian/rules build subprocess returned exit status 2 make[1]: *** [scripts/Makefile.package:77:deb-pkg] 错误

时间: 2025-06-09 12:57:04 浏览: 15
<think>嗯,用户遇到了在编译Debian软件包时出现的错误,具体是执行`make -j `getconf _NPROCESSORS_ONLN` deb-pkg`之后出现`dpkg-buildpackage: 错误: debian/rules build subprocess returned exit status 2`和`make[1]: *** [scripts/Makefile.package:77:deb-pkg] 错误`。我需要先分析可能的原因,然后给出解决方案。 首先,用户使用的命令是`make -j `getconf _NPROCESSORS_ONLN` deb-pkg`,这里`getconf _NPROCESSORS_ONLN`的作用是获取当前在线的处理器数量,用于并行编译,加快速度。这个命令本身没有问题,但并行编译有时会引发竞争条件,导致编译失败。可能的原因之一就是并行编译的问题,建议用户尝试单线程编译,排除这个问题。 接下来,错误信息提到`debian/rules build`子进程返回了状态码2。状态码2通常表示编译过程中的某个步骤出错了。需要检查编译日志,看看具体哪里出问题。用户可能没有足够的权限,或者缺少依赖包,或者代码本身有错误。 权限问题的话,用户是否使用了sudo?但通常编译时不推荐使用root权限,除非必要步骤。不过生成deb包可能需要,所以可以建议用户检查权限,或者尝试使用fakeroot。 依赖问题很常见。Debian构建通常需要安装build-essential、fakeroot、devscripts等,还有特定项目的依赖。用户可能缺少某些开发库,需要根据项目文档安装。可以建议用户查看项目的debian/control文件,安装列出的依赖。 代码错误的话,如果是用户自己修改了代码,可能导致编译失败。建议回退到干净源码重新编译。如果是上游代码问题,可能需要查看官方issue或论坛。 磁盘空间不足也可能导致编译失败,特别是生成deb包时需要足够空间。建议检查磁盘空间,清理或扩展。 环境配置问题,比如编译器版本不兼容,或者某些环境变量设置不正确。可以建议检查gcc、make版本,或者尝试清理构建环境(make clean或make mrproper)。 查看详细日志是关键,用户可以通过重新运行命令并重定向输出到文件,或者查看debian/build目录下的日志文件。具体错误信息会指导下一步操作。 总结下来,可能的解决步骤包括:单线程编译、检查依赖、查看详细日志、确保权限和磁盘空间、清理构建环境等。需要逐步排查,找到具体原因。</think>你遇到的错误是在使用`make -j $(getconf _NPROCESSORS_ONLN) deb-pkg`编译生成Debian软件包时,`dpkg-buildpackage`在调用`debian/rules build`时失败。以下是详细解释和排查思路: --- ### 错误原因分析 1. **并行编译问题** `-j $(getconf _NPROCESSORS_ONLN)`会根据CPU核心数启用多线程编译,但某些代码或构建脚本可能存在**竞争条件**(race condition),导致编译失败。 **尝试改用单线程编译**: ```bash make -j1 deb-pkg ``` 2. **依赖缺失** Debian软件包构建需要依赖以下基础工具: ```bash sudo apt install build-essential fakeroot devscripts ``` 此外,还需确保**项目特定的依赖**已安装(通常在`debian/control`文件中声明)。 3. **源码或补丁问题** - 如果修改过源码,可能存在语法错误或兼容性问题。 - 如果使用了第三方补丁,可能未正确应用。 4. **权限或路径问题** - 确保在**干净的源码目录**中操作(无残留的临时文件)。 - 尝试以普通用户身份运行(避免`sudo`可能导致的权限冲突)。 5. **磁盘空间不足** 编译过程可能生成大量临时文件,检查磁盘空间: ```bash df -h ``` --- ### 关键排查步骤 1. **查看完整日志** 重新运行命令并保存输出到文件: ```bash make -j$(nproc) deb-pkg 2>&1 | tee build.log ``` 打开`build.log`,搜索`error:`或`failed`关键词,定位具体错误位置。 2. **检查`debian/rules`文件** - 确保`debian/rules`文件具有可执行权限: ```bash chmod +x debian/rules ``` - 手动执行构建步骤(可能需要分步调试): ```bash fakeroot debian/rules build ``` 3. **清理构建环境** - 删除所有生成的文件: ```bash make clean ``` 或彻底清理(慎用,会重置配置): ```bash make mrproper ``` 4. **验证工具链** - 检查编译器版本是否兼容: ```bash gcc --version make --version ``` --- ### 常见解决方案 - **方案1:修复依赖** 根据日志提示安装缺失的包,例如: ```bash sudo apt install libssl-dev zlib1g-dev ``` - **方案2:禁用特定编译选项** 如果错误涉及内核配置(如驱动模块问题),尝试调整配置: ```bash make menuconfig # 调整后保存配置 make -j$(nproc) deb-pkg ``` - **方案3:使用官方构建脚本** 如果是内核编译,可改用Debian官方方法: ```bash make bindeb-pkg ``` --- ### 扩展建议 - 如果是**内核编译**,参考Debian Wiki:[Kernel Handbook](https://kernel-team.pages.debian.net/kernel-handbook/) - 使用`pbuilder`或`sbuild`在纯净环境中构建软件包,避免宿主环境干扰。 如果提供具体的错误日志片段,可以进一步缩小问题范围。
阅读全文

相关推荐

declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/0/bus" declare -x DISPLAY="localhost:11.0" declare -x HOME="/root" declare -x LANG="zh_CN.UTF-8" declare -x LANGUAGE="zh_CN:zh" declare -x LOGNAME="root" declare -x MOTD_SHOWN="pam" declare -x OLDPWD declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" declare -x PWD="/root" declare -x SHELL="/bin/bash" declare -x SHLVL="1" declare -x SSH_CLIENT="192.168.227.1 51811 22" declare -x SSH_CONNECTION="192.168.227.1 51811 192.168.227.129 22" declare -x SSH_TTY="/dev/pts/2" declare -x TERM="xterm" declare -x USER="root" declare -x XDG_DATA_DIRS="/usr/share/gnome:/usr/local/share/:/usr/share/" declare -x XDG_RUNTIME_DIR="/run/user/0" declare -x XDG_SESSION_CLASS="user" declare -x XDG_SESSION_ID="7" declare -x XDG_SESSION_TYPE="tty" declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/0/bus" declare -x DISPLAY="localhost:11.0" declare -x DOCKER_HOST="unix:///run/docker/docker.sock" declare -x HOME="/root" declare -x LANG="zh_CN.UTF-8" declare -x LANGUAGE="zh_CN:zh" declare -x LOGNAME="root" declare -x MOTD_SHOWN="pam" declare -x OLDPWD declare -x PATH="/usr/local/docker:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" declare -x PWD="/root" declare -x SHELL="/bin/bash" declare -x SHLVL="1" declare -x SSH_CLIENT="192.168.227.1 51811 22" declare -x SSH_CONNECTION="192.168.227.1 51811 192.168.227.129 22" declare -x SSH_TTY="/dev/pts/2" declare -x TERM="xterm" declare -x USER="root" declare -x XDG_DATA_DIRS="/usr/share/gnome:/usr/local/share/:/usr/share/" declare -x XDG_RUNTIME_DIR="/run/user/0" declare -x XDG_SESSION_CLASS="user" declare -x XDG_SESSION_ID="7" declare -x XDG_SESSION_TYPE="tty" -bash: n:/bin: 没有那个文件或目录 declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/0/bus" declare -x DISPLAY="localhost:11.0" declare -x DOCKER_HOST="unix:///run/docker/docker.sock" declare -x HOME="/root" declare -x LANG="zh_CN.UTF-8" declare -x LANGUAGE="zh_CN:zh" declare -x LOGNAME="root"

[root@hadoop01 jars]# hadoop jar film.jar CleanDriver /film/input /film/outputs/cleandata 25/04/02 17:25:34 INFO client.RMProxy: Connecting to ResourceManager at hadoop01/192.168.20.20:8032 25/04/02 17:25:35 WARN mapreduce.JobResourceUploader: Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this. 25/04/02 17:25:35 INFO input.FileInputFormat: Total input paths to process : 2 25/04/02 17:25:35 INFO mapreduce.JobSubmitter: number of splits:2 25/04/02 17:25:35 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1743583799083_0005 25/04/02 17:25:35 INFO impl.YarnClientImpl: Submitted application application_1743583799083_0005 25/04/02 17:25:35 INFO mapreduce.Job: The url to track the job: http://hadoop01:8088/proxy/application_1743583799083_0005/ 25/04/02 17:25:35 INFO mapreduce.Job: Running job: job_1743583799083_0005 25/04/02 17:25:41 INFO mapreduce.Job: Job job_1743583799083_0005 running in uber mode : false 25/04/02 17:25:41 INFO mapreduce.Job: map 0% reduce 0% 25/04/02 17:25:49 INFO mapreduce.Job: map 100% reduce 0% 25/04/02 17:25:55 INFO mapreduce.Job: map 100% reduce 17% 25/04/02 17:26:01 INFO mapreduce.Job: map 100% reduce 33% 25/04/02 17:26:04 INFO mapreduce.Job: map 100% reduce 50% 25/04/02 17:26:05 INFO mapreduce.Job: map 100% reduce 67% 25/04/02 17:26:06 INFO mapreduce.Job: map 100% reduce 100% 25/04/02 17:26:06 INFO mapreduce.Job: Job job_1743583799083_0005 completed successfully 25/04/02 17:26:06 INFO mapreduce.Job: Counters: 50 File System Counters FILE: Number of bytes read=36 FILE: Number of bytes written=982026 FILE: Number of read operations=0 FILE: Number of large read operations=0 FILE: Number of write operations=0 HDFS: Number of bytes read=17347 HDFS: Number of bytes written=0 HDFS: Number of read operations=24 HDFS: Number of large read operations=0 HDFS: Number of write operations=12 Job Counters Killed reduce tasks=1 Launched map tasks=2 Launched reduce tasks=6 Data-local map tasks=2 Total time spent by all maps in occupied slots (ms)=9878 Total time spent by all reduces in occupied slots (ms)=55847 Total time spent by all map tasks (ms)=9878 Total time spent by all reduce tasks (ms)=55847 Total vcore-milliseconds taken by all map tasks=9878 Total vcore-milliseconds taken by all reduce tasks=55847 Total megabyte-milliseconds taken by all map tasks=10115072 Total megabyte-milliseconds taken by all reduce tasks=57187328 Map-Reduce Framework Map input records=144 Map output records=0 Map output bytes=0 Map output materialized bytes=72 Input split bytes=219 Combine input records=0 Combine output records=0 Reduce input groups=0 Reduce shuffle bytes=72 Reduce input records=0 Reduce output records=0 Spilled Records=0 Shuffled Maps =12 Failed Shuffles=0 Merged Map outputs=12 GC time elapsed (ms)=535 CPU time spent (ms)=2820 Physical memory (bytes) snapshot=1039224832 Virtual memory (bytes) snapshot=16491360256 Total committed heap usage (bytes)=453517312 Shuffle Errors BAD_ID=0 CONNECTION=0 IO_ERROR=0 WRONG_LENGTH=0 WRONG_MAP=0 WRONG_REDUCE=0 File Input Format Counters Bytes Read=17128 File Output Format Counters Bytes Written=0

<configuration> <name>fs.defaultFS</name> <value>hdfs://mycluster</value> <name>hadoop.tmp.dir</name> <value>/usr/ha/hadoop-3.1.3/data</value> </configuration> <configuration> <name>dfs.namenode.name.dir</name> <value>file://${hadoop.tmp.dir}/name</value> <name>dfs.datanode.data.dir</name> <value>file://${hadoop.tmp.dir}/data</value> <name>dfs.journalnode.edits.dir</name> <value>${hadoop.tmp.dir}/jn</value> <name>dfs.nameservices</name> <value>mycluster</value> <name>dfs.ha.namenodes.mycluster</name> <value>nn1,nn2,nn3</value> <name>dfs.namenode.rpc-address.mycluster.nn1</name> <value>hadoop101:8020</value> <name>dfs.namenode.rpc-address.mycluster.nn2</name> <value>hadoop102:8020</value> <name>dfs.namenode.rpc-address.mycluster.nn3</name> <value>hadoop103:8020</value> <name>dfs.namenode.http-address.mycluster.nn1</name> <value>hadoop101:9870</value> <name>dfs.namenode.http-address.mycluster.nn2</name> <value>hadoop102:9870</value> <name>dfs.namenode.http-address.mycluster.nn3</name> <value>hadoop103:9870</value> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://hadoop101:8485;hadoop102:8485;hadoop103:8485/myclus ter</value> <name>dfs.client.failover.proxy.provider.mycluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyP rovider</value> <value>shell(true)</value> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> <value>shell(true)</value> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/root/.ssh/id_rsa</value> </configuration> 这是我的两个配置文件的内容,有没有问题

最新推荐

recommend-type

浅谈int8_t int64_t size_t ssize_t的相关问题(详解)

2. `getconf LONG_BIT`:这将告诉你`long int`的位宽,对于64位系统,这通常是64。 3. `uname -a`:这个命令会显示系统信息,包括架构,如x86_64表示64位。 理解这些类型在跨平台编程中至关重要,因为它们能确保...
recommend-type

hp-ux11.31+oracle10g(10.2.0.1)+RAC+ASM安装过程

3. **操作系统版本和位宽**:使用`uname -a`和`getconf KERNEL_BITS`检查操作系统版本和位宽,以确认与Oracle软件的兼容性。 4. **时间同步**:所有节点的日期和时间应保持一致,可通过`date`命令查看并调整,必要...
recommend-type

AIX6.1上安装Oracle_10g_R2_RAC、升级

在AIX 6.1操作系统上安装Oracle 10g Release 2 (R2) Real Application Clusters (RAC)是一项复杂的过程,涉及到多个步骤和系统配置检查。以下是一些关键的知识点: 1. **系统基本信息检查**: - 使用`uname`命令...
recommend-type

第一章计算机系统概述.ppt

第一章计算机系统概述.ppt
recommend-type

深入解析PetShop4.0电子商务架构与技术细节

标题和描述中提到的是PetShop4.0,这是一个由微软官方发布的示例电子商务应用程序,它使用ASP.NET构建,并且遵循三层架构的设计模式。在这个上下文中,“三层架构”指的是将应用程序分为三个基本的逻辑组件:表示层、业务逻辑层和数据访问层。 ### ASP.NET三层架构 ASP.NET是微软推出的一个用于构建动态网站、Web应用程序和Web服务的服务器端技术。ASP.NET能够运行在.NET框架上,为开发者提供了编写Web应用程序的丰富控件和库。 #### 表示层(用户界面层) 表示层是用户与应用程序交互的界面,通常包括Web页面。在PetShop4.0中,这包括了购物车界面、产品展示界面、用户登录和注册界面等。ASP.NET中的Web表单(.aspx文件)通常用于实现表示层。 #### 业务逻辑层(中间层) 业务逻辑层负责处理应用程序的业务规则和逻辑。在PetShop4.0中,这一层可能包括订单处理、产品管理、用户管理等功能。在ASP.NET中,业务逻辑通常被封装在类和方法中,可以通过Web服务(.asmx)或Web API(.asmx)暴露给客户端或前端。 #### 数据访问层 数据访问层负责与数据库进行交互,如执行SQL命令、存储过程等。PetShop4.0使用了数据访问组件来实现数据的读取、写入等操作。在.NET框架中,通常使用ADO.NET来实现数据访问层的功能,包括数据库连接、数据读取和写入等。 ### PetShop4.0技术详解 PetShop4.0的架构和技术实现是学习ASP.NET电子商务应用程序开发的理想案例,其技术特性如下: 1. **三层架构**:PetShop4.0清晰地展示了如何将应用程序分为三个层次,每一层都有清晰的职责。这为开发者提供了一个良好的架构模式,可以有效地组织代码,提高可维护性。 2. **ASP.NET Web Forms**:这一版本的PetShop使用ASP.NET Web Forms来构建用户界面。Web Forms允许开发者通过拖放服务器控件来快速开发网页,并处理回发事件。 3. **ADO.NET**:数据访问层使用ADO.NET来与数据库进行通信。ADO.NET提供了一套丰富的数据访问API,可以执行SQL查询和存储过程,以及进行数据缓存等高级操作。 4. **C# 编程语言**:PetShop4.0使用C#语言开发。C#是.NET框架的主要编程语言之一,它提供了面向对象、类型安全、事件驱动的开发能力。 5. **企业库(Enterprise Library)**:企业库是.NET框架中的一套设计良好的应用程序块集合,用于简化常见企业级开发任务,比如数据访问、异常管理等。PetShop4.0可能集成了企业库,用以提高代码的可靠性与易用性。 6. **LINQ(语言集成查询)**:在更高版本的.NET框架中,LINQ提供了一种将查询直接集成到C#等.NET语言中的方式,可以用来查询和操作数据。尽管PetShop4.0可能未直接使用LINQ,但是了解其如何工作对于理解数据访问层设计是非常有益的。 ### PetShop4.0安装和部署 通过标题中提到的文件名“Microsoft .NET Pet Shop 4.0.msi”,我们知道这是一个安装程序文件,用于将PetShop4.0安装到系统中。安装时,该安装包将引导用户完成必要的步骤,包括配置数据库连接(通常是SQL Server),并安装所需的.NET框架组件。 ### 学习PetShop4.0的意义 作为电子商务网站的开发人员,学习PetShop4.0可以带来以下好处: - **架构理解**:通过分析PetShop4.0的代码和架构,开发者可以深入理解三层架构模式的实际应用。 - **代码实践**:可以直接研究和修改源代码,了解ASP.NET应用程序的工作机制。 - **技术熟练**:通过部署和维护PetShop4.0,开发者能够提升在ASP.NET平台上的实际操作能力。 - **最佳实践**:作为一个示例项目,PetShop4.0展示了微软推荐的开发方法和模式,有助于遵循最佳实践。 总之,PetShop4.0不仅是一个电子商务应用的示例,它也是一个学习和练习ASP.NET开发技能的优秀平台。通过对这一范例的深入学习和研究,开发者能够掌握构建复杂的Web应用程序所需的架构设计、编程实践和系统维护等多方面知识。
recommend-type

【技术揭秘】:7步打造YOLOv8人员溺水检测告警监控系统

# 摘要 本论文详细介绍了YOLOv8人员溺水检测系统的构建与优化策略。首先概述了该系统的设计理念及理论基础,深入解析了YOLOv8模型的架构及其在溺水检测领域的应用。
recommend-type

stm32CAN总线

<think>我们正在处理一个关于STM32 CAN总线配置和使用的问题。用户要求提供配置和使用指南,因此我们需要系统地介绍CAN总线的配置步骤、关键参数设置以及常见使用场景。 根据引用内容,STM32的CAN总线配置主要涉及两个部分:CAN初始化和过滤器配置。我们将按照以下结构组织回答: 1. CAN总线基本概念(简要介绍) 2. CAN总线配置步骤(重点) a. CAN初始化结构体配置(包括工作模式、位时序、波特率等) b. CAN过滤器配置(标识符过滤规则) 3. 发送和接收消息的基本流程 4. 常见问题及解决方法 注意:引用中提供的代码片段是配置示例,我
recommend-type

毕业设计资料分享与学习方法探讨

标题和描述提供了两个主要线索:毕业设计和网上购物。结合标题和描述,我们可以推断出该毕业设计很可能是与网上购物相关的项目或研究。同时,请求指导和好的学习方法及资料也说明了作者可能在寻求相关领域的建议和资源。 【网上购物相关知识点】 1. 网上购物的定义及发展: 网上购物指的是消费者通过互联网进行商品或服务的浏览、选择、比较、下单和支付等一系列购物流程。它依托于电子商务(E-commerce)的发展,随着互联网技术的普及和移动支付的便捷性增加,网上购物已经成为现代人生活中不可或缺的一部分。 2. 网上购物的流程: 网上购物的基本流程包括用户注册、商品浏览、加入购物车、填写订单信息、选择支付方式、支付、订单确认、收货、评价等。了解这个流程对于设计网上购物平台至关重要。 3. 网上购物平台的构成要素: 网上购物平台通常由前端展示、后端数据库、支付系统、物流系统和客户服务等几大部分组成。前端展示需要吸引用户,并提供良好的用户体验;后端数据库需要对商品信息、用户数据进行有效管理;支付系统需要确保交易的安全性和便捷性;物流系统需要保证商品能够高效准确地送达;客户服务则需处理订单问题、退换货等售后服务。 4. 网上购物平台设计要点: 设计网上购物平台时需要注意用户界面UI(User Interface)和用户体验UX(User Experience)设计,保证网站的易用性和响应速度。此外,平台的安全性、移动适配性、搜索优化SEO(Search Engine Optimization)、个性化推荐算法等也都是重要的设计考量点。 5. 网上购物的支付方式: 目前流行的支付方式包括信用卡支付、电子钱包支付(如支付宝、微信支付)、银行转账、货到付款等。不同支付方式的特点和使用频率随着国家和地区的不同而有所差异。 6. 网上购物中的数据分析: 在设计网上购物平台时,数据分析能力至关重要。通过收集和分析用户的购买行为数据、浏览行为数据和交易数据,商家可以更好地理解市场趋势、用户需求、优化商品推荐,提高转化率和客户忠诚度。 7. 网上购物的法律法规: 网上购物平台运营需遵守相关法律法规,如《中华人民共和国电子商务法》、《消费者权益保护法》等。同时,还需了解《数据安全法》和《个人信息保护法》等相关隐私保护法律,确保用户信息的安全和隐私。 8. 网上购物的网络营销策略: 网络营销包括搜索引擎优化(SEO)、搜索引擎营销(SEM)、社交媒体营销、电子邮件营销、联盟营销、内容营销等。一个成功的网上购物平台往往需要多渠道的网络营销策略来吸引和维持客户。 9. 网上购物的安全问题: 网络安全是网上购物中一个非常重要的议题。这涉及到数据传输的加密(如SSL/TLS)、个人信息保护、交易安全、抗DDoS攻击等方面。安全问题不仅关系到用户的财产安全,也直接关系到平台的信誉和长期发展。 10. 毕业设计的选题方法和资料搜集: 在进行毕业设计时,可以围绕当前电子商务的发展趋势、存在的问题、未来的发展方向等来选题。资料搜集可以利用图书馆资源、网络学术资源、行业报告、相关书籍和专业论文等途径。同时,实际参与网上购物平台的使用、调查问卷、访谈等方式也是获取资料的有效途径。 根据标题、描述和文件名,可以认为毕业设计资料信息的内容可能围绕“网上购物”的相关概念、技术、市场和法律法规进行深入研究。上述知识点的总结不仅包括了网上购物的基础知识,也涵盖了设计和运营网上购物平台的多个关键方面,为有志于在这个领域的学生提供了理论和实践的参考。
recommend-type

模式识别期末复习精讲:87个问题的全面解析与策略

# 1. 模式识别基础概念与理论框架 ## 1.1 定义与应用范围 模式识别是一门关于如何使机器能够自动识别数据模式和规律的交叉学科。其核心在
recommend-type

import torch import numpy as np def a2t(): np_data = np.array([[1, 2],[3,4]]) #/********** Begin *********/ #将np_data转为对应的tensor,赋给变量torch_data torch_data = torch.tensor(np_data) #/********** End *********/ return(torch_data)

<think>我们正在处理用户关于PyTorch张量操作和与NumPy数组转换的代码检查请求。根据用户需求,我们需要: 1. 展示如何在PyTorch中将张量转换为NumPy数组,以及反向转换。 2. 提供一些常见的张量操作示例。 3. 对代码进行解释和检查。 注意:由于用户要求生成相关问题,我们将在回答后生成相关问题。 步骤: 1. 导入必要的库(torch和numpy)。 2. 创建示例张量。 3. 展示张量转NumPy数组(注意:共享内存问题,即修改一个可能影响另一个)。 4. 展示NumPy数组转张量(同样注意共享内存问题)。 5. 展示一些基本张量操作(如加减乘除、矩阵乘法、形状