RTEMS4.10 交叉编译器列表

合集下载

交叉编译流程

交叉编译流程

交叉编译流程
交叉编译的过程可以分为以下步骤:
1. 选择目标体系结构:确定要交叉编译的目标体系结构,例如不同的硬件平台或操作系统。

2. 安装交叉编译工具链:交叉编译工具链包括交叉编译器、链接器、调试器和库文件等,用于将源代码编译成目标平台可执行程序。

这些工具可以通过官方提供的源代码进行编译,也可以通过第三方工具包进行安装。

3. 配置交叉编译环境:确保系统能够正确地找到和使用交叉编译工具链。

这通常涉及将工具链的路径添加到环境变量中,并在构建系统中设置相应的配置参数。

4. 运行configure命令:进入源码包根目录下,运行configure命令。


命令有很多参数可配置,可以用configure –help来查看,在交叉编译过程中可设置–host、–target、–build这几个参数。

这些参数配置后,configure时会读取源码目录下面的文件,查找、检查设置的参数是否支持。

完成以上步骤后,就可以开始进行交叉编译了。

如果还有其他疑问,建议咨询专业编程人员以获取更全面的信息。

交叉编译树莓派内核教程

交叉编译树莓派内核教程

交叉编译树莓派内核教程以下是一个交叉编译树莓派内核的教程:1. 准备交叉编译工具链:在你的主机上安装交叉编译工具链。

树莓派使用的是ARM架构,所以你需要一个适用于ARM的工具链。

你可以下载一个现成的工具链,也可以从源代码自己构建。

2. 获取树莓派内核源代码:你可以从树莓派官方网站上下载最新的内核源代码。

解压缩源代码到你的主机上的某个目录中。

3. 配置交叉编译环境:在源代码目录中运行以下命令来配置交叉编译环境:```export CROSS_COMPILE=<交叉编译工具链的前缀>export ARCH=arm```4. 配置内核:在源代码目录中运行以下命令来配置内核选项: ```make <树莓派型号>_defconfig```5. 编译内核:运行以下命令来编译内核:```make -j4````-j4`参数指定使用4个线程进行编译,你可以根据你的主机的配置进行调整。

6. 交叉编译模块:如果你需要编译一些内核模块,你可以运行以下命令:```make modules```7. 安装内核:将编译好的内核和模块拷贝到你的树莓派上。

你可以通过将生成的zImage文件拷贝到/boot目录来安装内核。

同时,将生成的设备树文件(.dtb)也拷贝到/boot目录。

8. 配置启动文件:编辑/boot/config.txt文件,将kernel选项指向你编译好的内核文件。

9. 重启树莓派:现在,你可以重启你的树莓派,它将加载你编译好的内核。

这些步骤将帮助您交叉编译树莓派内核。

请注意,这只是一个概述,具体步骤可能会因环境而异。

您可能需要参考更详细的教程或根据您的需求进行自定义配置。

ARM、linux常用服务器+交叉编译工具链

ARM、linux常用服务器+交叉编译工具链

ARM、linux常用服务器+交叉编译工具链1. tftp服务器在安装linux时通常可供选择是否安装tftp服务器启动后可通过在控制终端输入netstat -a|grep tftp查看是否已经安装若已安装则为如下打印信息:[root@localhost /]# netstat -a|grep tftp若没有安装则可使用–ivh tftp-server-0.42-3.1.i386.rpm进行安装然后建立主要工作目录mkdir /tftpboot接下来配置tftp服务器/etc/init.d/tftp# default: off# description: The tftp server serves files using the trivial file transfer \par# protocol. The tftp protocol is often used to boot diskless \par# workstations, download configuration files to network-aware printers, \par # and to start the installation process for some operating systems.tftp_type = dgram= udp= yes= root= /usr/sbin/in.tftpd_args =-s /tftpboot= no_source = 11= 100 2= IPv4注意修改server_args= -s /tftpboot为你tftp工作目录。

接下来便是重启tftp 服务器了/etc/init.d/xinetd restart打印出如下信息[root@localhost /]# /etc/init.d/xinetd restartxinetd: [ OK ] xinetd: [ OK ]表示重启成功接下来便可查看是否已经安装成功[root@localhost /]# netstat -a|grep tftp. nfs服务器首先查看nfs服务器是否被安装(这里为red-had5)rpm –q nfs-utils若打印出如下信息则表示已经被安装[root@localhost ~]# rpm -q nfs-utilsutils-1.0.9-24.el5若没有安装nfs服务器则先下载相应的nfs服务器包百度一个即可然后rpm –ivh nfs- utils-1.0.9-24.el5.i386.rpm这里使用的nfs版本为utils-1.0.9-24.el5故不同版本安装不同,然后进入nfs配置/etc/exports/nfsroot/rootfs 211.67.216.* (rw,sync,no_root_squash).67.216.* 配置网段为自己IP地址同一网段然后启动NFS服务器/etc/init.d/nfs start 启动nfs服务器如下所示:[ OK ]NFS quotas: [ OK ]NFS daemon: [ OK ]NFS mountd: [ OK ]然后即可挂载nfs服务器上的共享目录了–t nfs xx.xx.xx.xx:/xx /mnt.xx.xx.xx为nfs服务器ip地址/xx 为需要挂载的目录接下来ls /mnt 即可查看是否挂载成功. samba服务器在安装linux时选中安装samba服务器然后这里就只需配置即可/etc/samba/smb.conf[homes]comment = Home Directoriesbrowseable = nowritable = yesvalid users = %Svalid users = MYDOMAIN%S然后粘贴修改如下[root]comment = Root Directoriesbrowseable = yeswritable = yespath = /valid users = smbvalid users = MYDOMAIN%S这里valid users = smb如果smb用户存在则不需添加否则需要添加smb然后设置smb账户登录密码–a smb重启smb服务器/etc/init.d/smb restart设置好linux ip后在windows命令行运行\xx.xx.xx.xx 输入账户密码即可访问linux目录了.xx.xx.xx为虚拟机linux IP地址通过chmod修改权限即可实现linux和windows文件共享了。

resiprocate 交叉编译

resiprocate 交叉编译

交叉编译是指在一台主机上编写、编译和打包代码,然后在另一台与主机不同架构的目标评台上运行。

在现代软件开发中,交叉编译已经变得非常普遍,尤其是在嵌入式系统和跨评台开发中。

在本文中,我们将深入探讨交叉编译的概念、原理和应用,以及交叉编译的意义和挑战。

一、什么是交叉编译?在传统的开发环境中,我们通常在一台与目标评台架构相同的主机上进行编译和运行程序。

但是,当我们需要在不同架构的目标评台上运行程序时,就需要使用交叉编译。

我们可能需要在一台x86架构的主机上编写、编译和打包ARM架构的程序,这时就需要使用交叉编译工具链来完成这个任务。

二、交叉编译的原理交叉编译的原理其实并不复杂,它主要是通过使用与目标评台架构相关的交叉编译工具链,来实现在一台与目标评台不同架构的主机上进行编译和打包。

交叉编译工具链包括交叉编译器、交叉信息器、交叉调试器等,它们能够将源代码编译成目标评台可执行的二进制文件,从而实现在不同架构的目标评台上运行程序。

三、交叉编译的应用交叉编译广泛应用于嵌入式系统开发和跨评台开发中。

在嵌入式系统开发中,由于嵌入式设备的资源有限,无法进行复杂的编译和打包操作,因此通常需要使用交叉编译来完成代码的编译和打包。

在跨评台开发中,比如移动应用开发和游戏开发,由于需要在不同评台上运行相同的程序,因此也需要使用交叉编译来完成这个任务。

四、交叉编译的意义和挑战交叉编译的意义在于能够实现在不同架构的目标评台上运行程序,从而实现程序的跨评台性和兼容性。

但是,交叉编译也面临着一些挑战,比如交叉编译工具链的选择和配置、目标评台的特性和限制等,这些都需要开发人员具备一定的技术和经验。

个人观点和理解在我看来,交叉编译是现代软件开发不可或缺的一部分,它能够帮助开发人员实现程序的跨评台性和兼容性,从而更好地满足不同用户和环境的需求。

交叉编译也是一项技术含量较高的工作,需要开发人员具备扎实的编程和系统知识,才能更好地应对各种挑战和问题。

ARM、linux常用服务器+交叉编译工具链

ARM、linux常用服务器+交叉编译工具链

1.tftp服务器在安装linux时通常可供选择是否安装tftp服务器启动后可通过在控制终端输入netstat -a|grep tftp查看是否已经安装若已安装则为如下打印信息:[root@localhost /]# netstat -a|grep tftpudp 0 0 *:tftp *:*若没有安装则可使用rpm –ivh tftp-server-0.42-3.1.i386.rpm进行安装然后建立主要工作目录mkdir /tftpboot接下来配置tftp服务器vim /etc/init.d/tftp# default: off# description: The tftp server serves files using the trivial file transfer \# protocol. The tftp protocol is often used to boot diskless \# workstations, download configuration files to network-aware printers, \# and to start the installation process for some operating systems.service tftp{socket_type = dgramprotocol = udpwait = yesuser = rootserver = /usr/sbin/in.tftpdserver_args = -s /tftpbootdisable = noper_source = 11cps = 100 2flags = IPv4}注意修改server_args = -s /tftpboot为你tftp工作目录。

接下来便是重启tftp 服务器了/etc/init.d/xinetd restart打印出如下信息[root@localhost /]# /etc/init.d/xinetd restartStopping xinetd: [ OK ]Starting xinetd: [ OK ]表示重启成功接下来便可查看是否已经安装成功[root@localhost /]# netstat -a|grep tftpudp 0 0 *:tftp *:*2.nfs服务器首先查看nfs服务器是否被安装(这里为red-had5)rpm –q nfs-utils若打印出如下信息则表示已经被安装[root@localhost ~]# rpm -q nfs-utilsnfs-utils-1.0.9-24.el5若没有安装nfs服务器则先下载相应的nfs服务器包百度一个即可然后rpm –ivh nfs- utils-1.0.9-24.el5.i386.rpm这里使用的nfs版本为utils-1.0.9-24.el5故不同版本安装不同,然后进入nfs配置vi /etc/exports/nfsroot/rootfs 211.67.216.* (rw,sync,no_root_squash)211.67.216.* 配置网段为自己IP地址同一网段然后启动NFS服务器/etc/init.d/nfs start 启动nfs服务器如下所示:[ OK ] Starting NFS quotas: [ OK ] Starting NFS daemon: [ OK ] Starting NFS mountd: [ OK ]然后即可挂载nfs服务器上的共享目录了mount –t nfs xx.xx.xx.xx:/xx /mntxx.xx.xx.xx为nfs服务器ip地址/xx 为需要挂载的目录接下来ls /mnt 即可查看是否挂载成功3.samba服务器在安装linux时选中安装samba服务器然后这里就只需配置即可vim /etc/samba/smb.conf约248行复制6行248 [homes]249 comment = Home Directories250 browseable = no251 writable = yes252 ; valid users = %S253 ; valid users = MYDOMAIN\%S然后粘贴修改如下254 [root]255 comment = Root Directories256 browseable = yes257 writable = yes258 path = /259 ; valid users = smb260 ; valid users = MYDOMAIN\%S这里valid users = smb如果smb用户存在则不需添加否则需要添加useradd smb然后设置smb账户登录密码smbpasswd –a smb重启smb服务器/etc/init.d/smb restart设置好linux ip后在windows命令行运行\\xx.xx.xx.xx 输入账户密码即可访问linux目录了xx.xx.xx.xx为虚拟机linux IP地址通过chmod修改权限即可实现linux和windows文件共享了。

jetson cmakelist 交叉编译

jetson cmakelist 交叉编译

为了在Jetson上进行交叉编译,您需要在CMakeLists.txt文件中进行一些配置。

首先,您需要确保您已经安装了交叉编译工具链。

在Jetson上,常用的交叉编译工具链是aarch64-linux-gnu-gcc。

接下来,您需要在CMakeLists.txt文件中设置CMAKE_C_COMPILER和
CMAKE_CXX_COMPILER变量,以指向交叉编译工具链中的编译器。

例如:
此外,您还需要设置CMAKE_SYSROOT变量,以指向交叉编译目标系统的根文件系统。

例如:
最后,您可以通过运行CMake来生成适用于交叉编译的Makefile文件:
这将生成适用于aarch64-linux-gnu平台的Makefile文件。

现在,您可以使用make命令进行交叉编译:
请注意,以上示例中的路径和变量需要根据您的实际情况进行修改。

交叉编译器 命名规则

交叉编译器 命名规则

交叉编译器命名规则交叉编译器命名规则交叉编译器是一种特殊的编译器,它能够在一台计算机上生成能在另一种不同的体系结构上运行的代码。

由于不同的体系结构有不同的指令集和硬件特性,所以编译器需要根据目标体系结构的要求生成相应的机器码。

在开发交叉编译器时,命名规则是非常重要的,因为它能够清晰地标识出编译器的用途和目标体系结构。

一、前缀交叉编译器的命名通常以一个前缀开始,用于表示编译器的用途或特性。

常见的前缀有:1. arm-:用于ARM架构的交叉编译器,适用于嵌入式系统和移动设备。

2. mips-:用于MIPS架构的交叉编译器,适用于嵌入式系统和网络设备。

3. powerpc-:用于PowerPC架构的交叉编译器,适用于服务器和高性能计算。

4. x86_64-:用于x86_64架构的交叉编译器,适用于个人电脑和服务器。

二、目标平台交叉编译器的命名中通常包含目标平台的信息,以便清楚地表明编译器生成的代码将在哪种体系结构上运行。

常见的目标平台包括:1. linux-:用于Linux操作系统的交叉编译器。

2. windows-:用于Windows操作系统的交叉编译器。

3. android-:用于Android操作系统的交叉编译器。

4. ios-:用于iOS操作系统的交叉编译器。

三、版本号交叉编译器的命名中通常包含版本号,以便区分不同版本的编译器。

版本号通常使用点分隔的数字表示,例如1.0.0或2.3.4。

四、特殊标识有些交叉编译器的命名中可能包含一些特殊的标识,以表示其特定的功能或特性。

例如:1. eabi-:表示使用嵌入式应用二进制接口(Embedded Application Binary Interface)的交叉编译器。

2. hardfloat-:表示使用硬件浮点运算的交叉编译器。

3. thumb-:表示生成Thumb指令集的交叉编译器,适用于ARM 架构。

五、示例根据以上规则,以下是一些常见的交叉编译器命名的示例:1. arm-linux-gcc:用于在Linux上编译ARM架构的代码的交叉编译器。

在RHEL上搭建rtems交叉编译环境及其测试

在RHEL上搭建rtems交叉编译环境及其测试
./configure
make
make install
编译安装RTEMS
cd ~/rtems/rtems-4.9.0
./bootstrap
cd ~/rtems/rtems-build
../rtems-4.9.0/configure --target=arm-rtems \
--enable-posix --enable-networking --enable-cxx --enable-itron \
binutils-2.18-rtems4.9-20080211.diff
gcc-core-4.3.2.tar.bz2
gcc-core-4.3.2-rtems4.9-20081214.diff
gcc-g++-4.3.2.tar.bz2
gmp-4.3.1.tar.gz
mpfr-2.4.1.tar.gz
ttyname-rtems4.9.0.diff
测试代码:
example-4.9.4.tar.bz2
解压以上文件:
cd ~/rtems
bz2文件使用命令:
例如:tar -xjvf ./download/binutils-2.18.tar.bz2
gz文件使用命令
例如:tar -xzvf ./download/newlib-1.16.0.tar.gz
make
make info
make install
编译安装gcc
cd ~/rtems/gcc-build
rm * -rf
../gcc-4.3.3/configure --target=arm-rtems --quiet \
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Tue Feb 8 10:20:07 CST 2011This file contains configuration information on theprimary computer used to test and make the 4.10.0version of RTEMSOS Version: Fedora release 14 (Laughlin)The following RTEMS RPMs were installed on the machine where this release was made:rtems-4.10-arm-rtems4.10-binutils-2.20.1-3.fc14.i686rtems-4.10-arm-rtems4.10-gcc-4.4.5-4.fc14.i686rtems-4.10-arm-rtems4.10-gcc-c++-4.4.5-4.fc14.i686rtems-4.10-arm-rtems4.10-gcc-libgcc-4.4.5-4.fc14.noarchrtems-4.10-arm-rtems4.10-gcc-libstdc++-4.4.5-4.fc14.noarch rtems-4.10-arm-rtems4.10-gdb-7.1-4.fc14.i686rtems-4.10-arm-rtems4.10-newlib-1.18.0-19.fc14.noarchrtems-4.10-autoconf-2.68-1.fc14.noarchrtems-4.10-automake-1.11.1-2.fc14.noarchrtems-4.10-avr-rtems4.10-binutils-2.20.1-3.fc14.i686rtems-4.10-avr-rtems4.10-gcc-4.4.5-4.fc14.i686rtems-4.10-avr-rtems4.10-gcc-libgcc-4.4.5-4.fc14.noarchrtems-4.10-avr-rtems4.10-gdb-7.1-4.fc14.i686rtems-4.10-avr-rtems4.10-newlib-1.18.0-19.fc14.noarchrtems-4.10-bfin-rtems4.10-binutils-2.20.1-3.fc14.i686rtems-4.10-bfin-rtems4.10-gcc-4.4.5-4.fc14.i686rtems-4.10-bfin-rtems4.10-gcc-c++-4.4.5-4.fc14.i686rtems-4.10-bfin-rtems4.10-gcc-libgcc-4.4.5-4.fc14.noarchrtems-4.10-bfin-rtems4.10-gcc-libstdc++-4.4.5-4.fc14.noarchrtems-4.10-bfin-rtems4.10-gdb-6.5-12.fc14.i686rtems-4.10-bfin-rtems4.10-newlib-1.18.0-19.fc14.noarchrtems-4.10-binutils-common-2.20.1-3.fc14.noarchrtems-4.10-gcc-common-4.4.5-4.fc14.noarchrtems-4.10-gdb-common-7.1-4.fc14.noarchrtems-4.10-h8300-rtems4.10-binutils-2.20.1-3.fc14.i686rtems-4.10-h8300-rtems4.10-gcc-4.4.5-4.fc14.i686rtems-4.10-h8300-rtems4.10-gcc-c++-4.4.5-4.fc14.i686rtems-4.10-h8300-rtems4.10-gcc-libgcc-4.4.5-4.fc14.noarch rtems-4.10-h8300-rtems4.10-gcc-libstdc++-4.4.5-4.fc14.noarch rtems-4.10-h8300-rtems4.10-gdb-7.1-4.fc14.i686rtems-4.10-h8300-rtems4.10-newlib-1.18.0-19.fc14.noarch rtems-4.10-i386-rtems4.10-binutils-2.20.1-3.fc14.i686rtems-4.10-i386-rtems4.10-gcc-4.4.5-4.fc14.i686rtems-4.10-i386-rtems4.10-gcc-c++-4.4.5-4.fc14.i686rtems-4.10-i386-rtems4.10-gcc-libgcc-4.4.5-4.fc14.noarch rtems-4.10-i386-rtems4.10-gcc-libstdc++-4.4.5-4.fc14.noarch rtems-4.10-i386-rtems4.10-gdb-7.1-4.fc14.i686rtems-4.10-i386-rtems4.10-newlib-1.18.0-19.fc14.noarch rtems-4.10-lm32-rtems4.10-binutils-2.20.1-3.fc14.i686rtems-4.10-lm32-rtems4.10-gcc-4.4.5-4.fc14.i686rtems-4.10-lm32-rtems4.10-gcc-c++-4.4.5-4.fc14.i686rtems-4.10-lm32-rtems4.10-gcc-libgcc-4.4.5-4.fc14.noarch rtems-4.10-lm32-rtems4.10-gcc-libstdc++-4.4.5-4.fc14.noarch rtems-4.10-lm32-rtems4.10-gdb-7.1-4.fc14.i686rtems-4.10-lm32-rtems4.10-newlib-1.18.0-19.fc14.noarch rtems-4.10-m32c-rtems4.10-binutils-2.20.1-3.fc14.i686rtems-4.10-m32c-rtems4.10-gcc-4.4.5-4.fc14.i686rtems-4.10-m32c-rtems4.10-gcc-libgcc-4.4.5-4.fc14.noarch rtems-4.10-m32c-rtems4.10-gdb-7.1-4.fc14.i686rtems-4.10-m32c-rtems4.10-newlib-1.18.0-19.fc14.noarchrtems-4.10-m32r-rtems4.10-binutils-2.20.1-3.fc14.i686rtems-4.10-m32r-rtems4.10-gcc-4.4.5-4.fc14.i686rtems-4.10-m32r-rtems4.10-gcc-libgcc-4.4.5-4.fc14.noarch rtems-4.10-m32r-rtems4.10-gdb-7.1-4.fc14.i686rtems-4.10-m32r-rtems4.10-newlib-1.18.0-19.fc14.noarchrtems-4.10-m68k-rtems4.10-binutils-2.20.1-3.fc14.i686rtems-4.10-m68k-rtems4.10-gcc-4.4.5-4.fc14.i686rtems-4.10-m68k-rtems4.10-gcc-c++-4.4.5-4.fc14.i686rtems-4.10-m68k-rtems4.10-gcc-libgcc-4.4.5-4.fc14.noarch rtems-4.10-m68k-rtems4.10-gcc-libstdc++-4.4.5-4.fc14.noarch rtems-4.10-m68k-rtems4.10-gdb-7.1-4.fc14.i686rtems-4.10-m68k-rtems4.10-newlib-1.18.0-19.fc14.noarchrtems-4.10-mips-rtems4.10-binutils-2.20.1-3.fc14.i686rtems-4.10-mips-rtems4.10-gcc-4.4.5-4.fc14.i686rtems-4.10-mips-rtems4.10-gcc-c++-4.4.5-4.fc14.i686rtems-4.10-mips-rtems4.10-gcc-libgcc-4.4.5-4.fc14.noarchrtems-4.10-mips-rtems4.10-gcc-libstdc++-4.4.5-4.fc14.noarch rtems-4.10-mips-rtems4.10-gdb-7.1-4.fc14.i686rtems-4.10-mips-rtems4.10-newlib-1.18.0-19.fc14.noarchrtems-4.10-mipstx39-rtems4.10-gdb-7.1-4.fc14.i686rtems-4.10-newlib-common-1.18.0-19.fc14.noarchrtems-4.10-powerpc-rtems4.10-binutils-2.20.1-3.fc14.i686rtems-4.10-powerpc-rtems4.10-gcc-4.4.5-4.fc14.i686rtems-4.10-powerpc-rtems4.10-gcc-c++-4.4.5-4.fc14.i686rtems-4.10-powerpc-rtems4.10-gcc-libgcc-4.4.5-4.fc14.noarch rtems-4.10-powerpc-rtems4.10-gcc-libstdc++-4.4.5-4.fc14.noarch rtems-4.10-powerpc-rtems4.10-gdb-7.1-4.fc14.i686rtems-4.10-powerpc-rtems4.10-newlib-1.18.0-19.fc14.noarch rtems-4.10-release-0.20101202.1-1.fc14.noarchrtems-4.10-sh-rtems4.10-binutils-2.20.1-3.fc14.i686rtems-4.10-sh-rtems4.10-gcc-4.4.5-4.fc14.i686rtems-4.10-sh-rtems4.10-gcc-c++-4.4.5-4.fc14.i686rtems-4.10-sh-rtems4.10-gcc-libgcc-4.4.5-4.fc14.noarch rtems-4.10-sh-rtems4.10-gcc-libstdc++-4.4.5-4.fc14.noarch rtems-4.10-sh-rtems4.10-gdb-7.1-4.fc14.i686rtems-4.10-sh-rtems4.10-newlib-1.18.0-19.fc14.noarchrtems-4.10-sparc-rtems4.10-binutils-2.20.1-3.fc14.i686rtems-4.10-sparc-rtems4.10-gcc-4.4.5-4.fc14.i686rtems-4.10-sparc-rtems4.10-gcc-c++-4.4.5-4.fc14.i686rtems-4.10-sparc-rtems4.10-gcc-libgcc-4.4.5-4.fc14.noarch rtems-4.10-sparc-rtems4.10-gcc-libstdc++-4.4.5-4.fc14.noarch rtems-4.10-sparc-rtems4.10-gdb-7.1-4.fc14.i686rtems-4.10-sparc-rtems4.10-newlib-1.18.0-19.fc14.noarch rtems-4.10-yum-conf-0.20101202.1-1.fc14.noarch。

相关文档
最新文档