当前位置: 首页 > news >正文

建立主题网站的顺序一般是女教师遭网课入侵直播录屏曝光se

建立主题网站的顺序一般是,女教师遭网课入侵直播录屏曝光se,衡水自助建站系统,淘宝联盟网站怎么建设本文摘录与整理于C语言中文网的相关内容#xff0c;仅用于学习#xff0c;如有侵权请告知删除。 原内容网址#xff1a;C语言中文网#xff1a;C语言程序设计门户网站(入门教程、编程软件) GCC官方文档网址#xff1a;Top (Using the GNU Compiler Collection (GCC)) 1、…本文摘录与整理于C语言中文网的相关内容仅用于学习如有侵权请告知删除。 原内容网址C语言中文网C语言程序设计门户网站(入门教程、编程软件) GCC官方文档网址Top (Using the GNU Compiler Collection (GCC)) 1、GCC编译器的由来 谈到 GCC编译器就不得不提 GNU 计划。GNU 计划的最终目标是打造出一套完全自由与开源的操作系统并初步将其命名为 GNU 操作系统。虽然该计划为 GNU 操作系统量身定做了名为 Thr Hurd 的系统内核但由于其性能比不上同时期诞生的 Linux 内核最终 GNU 计划放弃 The Hurd 而选用 Linux 作为 GNU 操作系统的内核。因此其被称为 GNU/Linux 操作系统人们更习惯称为 Linux 操作系统。在 Linux 内核的基础上GNU 计划开发了很多系统部件GCC 就是其中之一。 早期 GCC 的全拼为 GNU C Compiler即 GUN 计划诞生的 C 语言编译器显然最初 GCC 的定位确实只用于编译 C 语言。但经过这些年不断的迭代GCC 的功能得到了很大的扩展它不仅可以用来编译 C 语言程序还可以处理 C、Go、Objective -C 等多种编译语言编写的程序。与此同时由于之前的 GNU C Compiler 已经无法完美诠释 GCC 的含义所以其英文全称被重新定义为  GNU Compiler Collection即 GNU 编译器套件。 所谓编译器可以简单地将其理解为“翻译器”。要知道计算机只认识二进制指令仅有 0 和 1 组成的指令我们日常编写的 C 语言代码、C 代码、Go 代码等计算机根本无法识别只有将程序中的每条语句翻译成对应的二进制指令计算机才能执行。 GCC 编译器从而停止过改进。截止到今日2020 年 5 月GCC 已经从最初的 1.0 版本发展到了 10.1 版本期间历经了上百个版本的迭代。作为一款最受欢迎的编译器GCC 被移植到数以千计的硬件/软件平台上几乎所有的 Linux 发行版也都默认安装有 GCC 编译器但通常版本比较低如果需要更新看第二点“GCC编译器下载与安装”。 操作系统大致分为 2 大阵营分别是 Windows 阵营和类 Unix 阵营包括 Unix、Linux、Mac OS、安卓等。通常情况下Windows 系统下用户更习惯使用现有的 IDE 来编译程序而类 Unix 系统下用户更喜欢直接编写相应的 gcc 命令来编译程序。纯 GCC 编译器没有我们熟悉的界面窗口要想使用它必须编写对应的 gcc 命令而集成了 GCC 编译器的开发软件IDE在集成 GCC 编译器功能的同时还向用户提供友好的界面窗口使得用户即便记不住 gcc 命令也能从事开发工作。 2、GCC编译器下载和安装 可以在终端输入“gcc --version”查看是否已经安装GCC编译器或者版本号 rootubuntu:/# gcc --version gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2 Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.rootubuntu:/#  GCC的安装可以分为两种方式快速安装与以源码方式手动安装。 1快速安装。如果对 GCC 编译器的版本没有要求可以利用linux的软件包管理工具快速安装。采用此方式安装的 GCC 编译器版本通常较低。以 CentOS 的 yum 为例 yum -y install gcc yum -y install gcc-c 2以源码方式手动安装。如果需要安装指定版本的 GCC 编译器则需要手动安装。需要到 GCC 官网下载指定版本的 GCC 源码安装包。参见GCC编译器下载和安装教程针对Linux发行版 3、Sublime text在Linux下的安装 Sublime Text 是一款非常流行的文本编辑器同时也是一个先进的代码编辑器。它最初被设计为一个具有丰富扩展功能的Vim。其界面简洁功能强大提供有众多的插件还支持跨平台使用包括 Mac OS X、Linux 和 Windows。 这里简述Sublime text在Linux下的安装过程参见博客Sublime text在Linux下的安装_良知犹存的博客-CSDN博客_linux sublime 4、gcc和g的区别 对于已编辑好 C 或者 C 代码可以通过执行 gcc 或者 g 指令来调用 GCC 编译器。实际使用中我们更习惯使用 gcc 指令编译 C 语言程序用 g 指令编译 C 代码。但这并不是 gcc 和 g 的区别gcc 指令也可以用来编译 C 程序同样 g 指令也可以用于编译 C 语言程序。只要是 GCC 支持编译的程序代码都可以使用 gcc 命令完成编译。可以这样理解gcc 是 GCC 编译器的通用编译指令因为根据程序文件的后缀名gcc 指令可以自行判断出当前程序所用编程语言的类别。比如 xxx.c默认以编译 C 语言程序的方式编译此文件xxx.cpp默认以编译 C 程序的方式编译此文件。xxx.m默认以编译 Objective-C 程序的方式编译此文件xxx.go默认以编译 Go 语言程序的方式编译此文件当然gcc 指令也为用户提供了“手动指定代表编译方式”的接口即使用 -x 选项。例如gcc -xc xxx 表示以编译 C 语言代码的方式编译 xxx 文件而 gcc -xc xxx 则表示以编译 C 代码的方式编译 xxx 文件。 但如果使用 g 指令则无论目标文件的后缀名是什么该指令都一律按照编译 C 代码的方式编译该文件。也就是说对于 .c 文件来说gcc 指令以 C 语言代码对待而 g 指令会以 C 代码对待。但对于 .cpp 文件来说gcc 和 g 都会以 C 代码的方式编译。 编译执行 C 程序使用 gcc 和 g 也是有区别的。要知道很多 C 程序都会调用某些标准库中现有的函数或者类对象而单纯的 gcc 命令是无法自动链接这些标准库文件的。如果想使用 gcc 指令来编译执行 C 程序需要在使用 gcc 指令时手动为其添加 -lstdc -shared-libgcc 选项表示 gcc 在编译 C 程序时可以链接必要的 C 标准库。比如 [rootubuntu ~]# gcc -xc demo.cpp -lstdc -shared-libgcc [rootubuntu ~]# 简而言之推荐使用 gcc 指令编译C程序推荐使用 g 指令编译C程序。 5、GCC的组成部分以及使用到的软件 表1列出的是GCC的组成部分。表 2 列出的软件和 GCC 协同工作目的是实现编译过程。有些是很基本的例如 as 和 Id而其他一些则是非常有用但不是严格需要的。尽管这些工具中的很多都是各种 UNIX 系统的本地工具但还是能够通过 GNU 包 binutils 得到大多数工具。  表1GCC 安装的各个部分部分描述cgcc 的一个版木默认语言设置为 C而且在连接的时候自动包含标准 C 库。这和 g 一样ccl实际的C编译程序cclplus实际的 C 编泽程序collect2在不使用 GNU 连接程序的系统上有必要运行 collect2 来产生特定的全局初始化代码例如 C 的构造函数和析构函数configureGCC 源代码树根目录中的一个脚木。用于设置配置值和创建GCC 编译程序必需的 make 程序的描述文件crt0.o这个初始化和结束代码是为每个系统定制的而且也被编译进该文件该文件然后会被连接到每个可执行文件中来执行必要的启动和终止程序cygwin1.dllWindows 的共享库提供的 API模拟 UNIX 系统调用f77该驱动程序可用于编译 Fortranf771实际的 Fortran 编译程序ggcc 的一个版木默认语言设置为 C而且在连接的时候自动包含标准 C 库。这和 c 一样gcc该驱动程序等同于执行编译程序和连接程序以产生需要的输出gcj该驱动程序用于编译 Javagnat1实际的 Ada 编译程序gnatbind一种工具用于执行 Ada 语言绑定gnatlink一种工具用于执行 Ada 语言连接jc1实际的 Java 编译程序libgcc该库包含的例程被作为编泽程序的一部分是因为它们可被连接到实际的可执行程序中。 它们是特殊的例程连接到可执行程序来执行基木的任务例如浮点运算。这些库中的例程通常都是平台相关的libgcj运行时库包含所有的核心 Java 类libobjc对所有 Objective-C 程序都必须的运行时库libstdc运行时库包括定义为标准语言一部分的所有的 C 类和函数 表2GCC 使用的软件工具工具描述addr2line给出一个可执行文件的内部地址addr2line 使用文件中的调试信息将地址翻泽成源代码文 件名和行号。该程序是 binutils 包的一部分ar这是一个程序可通过从文档中增加、删除和析取文件来维护库文件。通常使用该工具是为了创建和管理连接程序使用的目标库文档。该程序是 binutils 包的一部分asGNU 汇编器。实际上它是一族汇编器因为它可以被编泽或能够在各种不同平台上工作。 该程序是 binutils 包的一部分autoconf产生的 shell 脚木自动配置源代码包去编泽某个特定版木的 UNIXcfilt程序接受被 C 编泽程序转换过的名字不是被重载的而且将该名字翻泽成初始形式。 该程序是 binutils 包的一部分f2c是 Fortran 到C的翻译程序。不是 GCC 的一部分gcovgprof 使用的配置工具用来确定程序运行的时候哪一部分耗时最大gdbGNU 调试器可用于检查程序运行时的值和行为GNATSGNU 的调试跟踪系统GNU Bug Tracking System。一个跟踪 GCC 和其他 GNU 软件问题的在线系统gprof该程序会监督编泽程序的执行过程并报告程序中各个函数的运行时间可以根据所提供 的配置文件来优化程序。该程序是 binutils 包的一部分ldGNU 连接程序。该程序将目标文件的集合组合成可执行程序。该程序是 binutils 包的一部libtool一个基本库支持 make 程序的描述文件使用的简化共享库用法的脚木make一个工具程序它会读 makefile 脚木来确定程序中的哪个部分需要编泽和连接然后发布 必要的命令。它读出的脚木叫做 makefile 或 Makefile定义了文件关系和依赖关系nlmconv将可重定位的目标文件转换成 NetWare 可加载模块NetWare Loadable Module, NLM。该 程序是 binutils 的一部分nm列出目标文件中定义的符号。该程序是 binutils 包的一部分objcopy将目标文件从一种二进制格式复制和翻译到另外一种。该程序是 binutils 包的一部分objdump显示一个或多个目标文件中保存的多种不同信息。该程序是 binutils 包的一部分ranlib创建和添加到 ar 文档的索引。该索引被 Id 使用来定位库中的模块。该程序是 binutils 包的一部分ratforRatfor 预处理程序可由 GCC 激活但不是标准 GCC 发布版的一部分readelf从 ELF 格式的目标文件显示信息。该程序是 binutils 包的一部分size列出目标文件中每个部分的名字和尺寸。该程序是 binutils 包的一部分strings浏览所有类型的文件析取出用于显示的字符串。该程序是 binutils 包的一部分strip从目标文件或文档库中去掉符号表以及其他调试所需的信息。该程序是 binutils 包的一部vcgRatfor 浏览器从文木文件中读取信息并以图表形式显示它们。而 vcg 工具并不是 GCC 发布中的一部分但 -dv 选项可被用来产生 vcg 可以理解的优化数据的格式windresWindow 资源文件编泽程序。该程序是 binutils 包的一部分6、GCC识别不同扩展名的文件 对于执行 C 或者 C 程序需要借助 gccg指令来调用 GCC 编译器并且对于以 .c 为扩展名的文件GCC 会自动将其视为 C 源代码文件而对于以 .cpp 为扩展名的文件GCC 会自动将其视为 C 源代码文件。下面表 1 罗列了 GCC 编译器可识别的与 C 和 C 语言相关的文件后缀名。 如果当前文件的扩展名和表 1 不符只需要借助 -x 选项小写指明当前文件的类型即可 如果C 程序存储在无扩展名的 demo 文件中直接使用 gcc 指令调用 GCC 编译器会报错。必须使用 -x 选项手动为其指定文件的类型即通过为 gcc 指令添加 -xc 选项表明当前 demo 为 C 语言程序文件即可成功将其编译为 a.out 可执行文件。除了用 c 表明 C 语言程序文件外-x 指令还是后跟 c-headerC语言头文件、cC源文件、c-headerC程序头文件等选项。 [rootbogon demo]# gcc demo demo: file not recognized: File format not recognized collect2: ld returned 1 exit status [rootbogon demo]# gcc -xc demo [rootbogon demo]# ls a.out demo [rootbogon demo]# ./a.out GCC教程http://c.biancheng.net/gcc/ 表 1 GCC 自动识别的常用扩展名文件名称扩展名GCC 编译器识别的文件类型file.c尚未经过预处理操作的 C 源程序文件。file.i经过预处理操作、但尚未进行编译、汇编和连接的 C 源代码文件。file.cpp file.cp file.cc file.cxx file.CPP file.c file.C尚未经过预处理操作的 C 源代码文件。file.ii已经预处理操作但尚未进行编译、汇编和连接的 C 源代码文件。file.s经过编译生成的汇编代码文件。file.hC、C 或者 Objective-C 语言头文件。file.hh file.H file.hp file.hxx file.hpp file.HPP file.h file.tccC 头文件。 7、不同GCC版本支持的C语言编译标准 以 C 语言为例发展至今该编程语言已经迭代了诸多个版本例如 C89偶尔又称为 C90、C94C89 的修订版、C99、C11、C17以及当下正在开发的 C2X 新标准。 甚至于在这些标准的基础上GCC 编译器本身还对 C 语言的语法进行了扩展先后产生了 GNU90、GNU99、GNU11 以及 GNU17 这 4 个版本。有趣的是GCC 编译器对 C 语言的很多扩展往往会被 C 语言标准委员会所采纳并添加到新的 C 语言标准中。例如GNU90 中对 C 语言的一些扩展就融入到了新的 C99 标准中GNU90、GNU99 中对 C 语言的一些扩展被融入到了新的 C11 标准中。 C 语言的发展也历经了很多个版本包括 C98、C03C98 的修订版、C11有时又称为 C0x、C14、C17以及即将要发布的 C20 新标准。和 C 语言类似GCC 编译器本身也对不同的 C 标准做了相应的扩展比如 GNU98、GNU11、GNU14、GNU17。 不同版本的 GCC 编译器默认使用的标准版本也不尽相同。以当前最新的  GCC 10.1.0 版本为例默认情况下 GCC 编译器会以 GNU11 标准C11 标准的扩展版编译 C 语言程序以 GNU14 标准C14 标准的扩展版编译 C 程序。 我们可以自由选择 GCC 编译器使用哪个编译标准。当然这也要看该版本的GCC编译器是否支持某个编译标准下表1和表2是不同版本的GCC编译器支持的编译标准。注意表头表示的是各个编译标准的名称而表格内部的则为 -std 可用的值例如 -stdc89、-stdc11、-stdgnu90 等表 2 也是如此。另外有些GCC编译器版本对应的同一编译标准有 2 种表示方式例如对于 8.4~10.1 版本的 GCC 编译器来说-stdc89 和 -stdc90 是一样的使用的都是 C89/C90 标准。 对于编译 C、C 程序来说借助 -std 选项即可手动控制 GCC 编译程序时所使用的编译标准。其基本格式如下gcc/g -std编译标准 [rootbogon demo]# gcc -stdc99 main.c -o main.o 表 1 不同GCC版本支持的C语言编译标准GCC 版本C语言常用标准C89/C90C99C11C17GNU90GNU99GNU11GNU1710.1 ~ 8.4c89 / c90c99c11c17/c18gnu90/gnu89gnu99gnu11gnu17/gnu187.5 ~ 5.5c89/c90c99c11gnu90/gnu89gnu99gnu114.9.4 ~ 4.8.5c89/c90c99c11gnu90/gnu89gnu99gnu114.7.4c89/c90c99部分支持c11部分支持gnu90/gnu89gnu99部分支持gnu11部分支持4.6.4c89/c90c99部分支持c1x部分支持gnu90/gnu89gnu99部分支持gnu1x部分支持4.5.4c89/c90 c99部分支持gnu90/gnu89gnu99部分支持 表 2 不同GCC版本支持的C编译标准GCC 版本C常用标准C98/03C11C14C17GNU98GNU11GNU14GNU1710.1 ~ 8.4c98/c03c11c14c17gnu98/gnu03gnu11gnu14gnu177.5 ~ 5.5c98/c03c11c14c1z部分支持gnu98/gnu03gnu11gnu14gnu1z部分支持4.9.4 ~ 4.8.5c98/c03c11c1y部分支持gnu98/gnu03gnu11gnu1y部分支持4.7.4c98c11部分支持gnu98gnu11部分支持4.6.4c98c0x部分支持 gnu98gnu0x部分支持4.5.4c98c0x部分支持 gnu98gnu0x部分支持 8、GCC编译C/C程序一步完成 所谓“编译C、C 程序”指的是将 C、C 源代码转变为可执行程序等同 Windows 系统中以 .exe 为后缀的可执行文件。C 或者 C 程序从源代码生成可执行程序的过程需经历 4 个过程分别是预处理、编译、汇编和链接。 GCC 编译器并未提供给用户可用鼠标点击的界面窗口要想调用 GCC 编译器编译 C 或者 C 程序只能通过执行相应的 gcc 或者 g 指令。使用 GCC 编译器编译 C 或者 C 程序也必须要经历上述的 4 个过程。但考虑在实际使用中用户可能并不关心程序的执行结果只想快速得到最终的可执行程序因此 gcc 和 g 都对此需求做了支持。 比如运行C文件demo.c与C文件demo.cpp的一步完成编译的指令 GCC 编译器就会在当前目录下生成对应的可执行文件该文件的名称为 a.out或者使用-o 选项指定要生成的文件名。虽然仅一条指令但依然按照预处理、编译、汇编、链接的过程将 C 、C 程序转变为可执行程序的。那些本应在预处理阶段、编译阶段、汇编阶段生成的中间文件此执行方式默认是不会生成的只会生成最终的 a.out 可执行文件除非为 gcc 或者 g 额外添加 -save-temps 选项。 [rootbogon ~]# gcc demo.c [rootbogon ~]# g demo.cpp #或者 gcc -xc -lstdc -shared-libgcc demo.cpp [rootbogon ~]# gcc demo.c -o demo.exe [rootbogon ~]# g demo.cpp -o democpp.exe # 或者 gcc -xc -lstdc -shared-libgcc demo.cpp -o democpp.exe 表 1 列出了实际使用 gcc 或者 g 指令编译 C/C 程序时常用的一些指令选项。 表 1 GCC常用的编译选项gcc/g指令选项功 能-E大写预处理指定的源文件不进行编译。-S大写编译指定的源文件但是不进行汇编。-c编译、汇编指定的源文件但是不进行链接。-o指定生成文件的文件名。-llibrary-I library其中 library 表示要搜索的库文件的名称。该选项用于手动指定链接环节中程序可以调用的库文件。建议 -l 和库文件名之间不使用空格比如 -lstdc。-ansi对于 C 语言程序来说其等价于 -stdc90对于 C 程序来说其等价于 -stdc98。-std手动指令编程语言所遵循的标准例如 c89、c90、c98、c11 等。 9、GCC分步编译C程序 编译的四个步骤的细节知识见链接GCC -E选项对源程序做预处理操作。下面将以某个demo.cpp 源文件来说明如何分步编译一个C程序。 1预处理 通过给 g 指令添加 -E 选项可实现令 GCC 编译器只对目标源程序进行预处理操作。由于编译阶段需要用到预处理的结果因此这里必须使用 -o 选项将该结果输出到指定的 demo.i 文件中Linux 系统中通常用 .i 或者 .ii 作为 C 程序预处理后所得文件的后缀名。 [rootbogon demo]# g -E demo.cpp -o demo.i [rootbogon demo]# ls demo.cpp demo.i 2编译 通过给 g 指令添加 -S 选项即可令 GCC 编译器仅对指定预处理文件做编译操作。对预处理文件进行编译操作实际上就是对 demo.i 文件做进一步的语法分析并生成对应的汇编代码文件Linux 发行版通常以 .s 作为其后缀名。即便不使用 -o 选项编译结果也会输出到和预处理文件同名后缀名改为 .s的新建文件中。 [rootbogon demo]# g -S demo.i [rootbogon demo]# ls demo.cpp  demo.i  demo.s 3汇编 通过给 g 指令添加 -c 选项即可令 GCC 编译器仅对指定的汇编代码文件做汇编操作。汇编阶段就是将之前生成的汇编代码文件demo.s做进一步转换生成对应的机器指令。默认情况下汇编操作会自动生成一个和汇编代码文件名称相同、后缀名为 .o 的二进制文件又称为目标文件。 [rootbogon demo]# g -c demo.s [rootbogon demo]# ls demo.cpp demo.i demo.o demo.s 4链接 目标文件已经是二进制文件与可执行文件的组织形式类似只是有些函数和全局变量的地址还未找到因此还无法执行。链接的作用就是找到这些目标地址将所有的目标文件组织成一个可以执行的二进制文件。它必须把符号变量名、函数名等一些列标识符用对应的数据的内存地址变量地址、函数地址等替代以完成程序中多个模块的外部引用。 完成链接操作并不需要给 g 添加任何选项只要将汇编阶段得到的 demo.o 作为参数传递给它g就会在其基础上完成链接操作。GCC 默认会链接 libc.a 或者 libc.so但是对于其他的库例如非标准库、第三方库等就需要手动添加。 在链接阶段如果不使用 -o 选项将执行结果输出到指定文件则会默认创建一个名为 a.out 的可执行文件并将执行结果输出到该文件中。 [rootbogon demo]# g demo.o [rootbogon demo]# ls a.out  demo.cpp  demo.i  demo.o  demo.s 如果读者不想执行这么多条指令通过给 g 添加 -save-temps 选项可以使 GCC 编译器保留编译源文件过程中产生的所有中间文件。 [rootbogon demo]# g demo.cpp -save-temps [rootbogon demo]# ls a.out  demo.c  demo.cpp  demo.ii  demo.o  demo.s 10、gcc指令一次性处理多个文件  一条 gccg指令往往可以一次性处理多个文件。 [rootbogon demo]# ls main.c myfun.c [rootbogon demo]# gcc -c myfun.c main.c [rootbogon demo]# ls main.c main.o myfun.c myfun.o [rootbogon demo]# gcc myfun.o main.o -o main.exe [rootbogon demo]# ls main.c main.exe main.o myfun.c myfun.o [rootbogon demo]# ./main.exe GCC:http://c.biancheng.net/gcc/ [rootbogon demo]# ls main.c myfun.c [rootbogon demo]# gcc *.c -o main.exe [rootbogon demo]# ls main.c main.exe myfun.c [rootbogon demo]# ./main.exe GCC:http://c.biancheng.net/gcc/
http://www.yutouwan.com/news/106250/

相关文章:

  • 源码网站制作教程一起看地图app下载手机版
  • 合肥公司网站建设国有企业网站建设
  • 网站设计公司哪里好三星网上商城怎么查物流
  • 一个网站主机多少钱一年植树节ppt模板下载免费版
  • 网站建设广州市有什么好的网站推荐一下
  • 网页做网站的尺寸海外人才招聘网
  • 顶尖网站建设仿站是什么
  • 做网站 用 云主机物业服务企业的品牌建设
  • 绍兴网站建站模板百度企业
  • 优秀企业网站欣赏淄博市临淄区建设局网站
  • 网站建设需什么营销网站制作免费咨询
  • 太原网站制作维护最近的头条新闻
  • 推广 广州网站建设公司东阳住房和城市建设网站
  • 深圳做网站公司那家比较好室内设计怎么网上接单
  • 同ip网站做排名seowordpress sqll
  • jsp 网站开发如何自己搭建游戏服务器
  • 烟台网站建设工资连云港新站优化
  • 上海企业网站设计公司电话西安网站建设工程
  • 微信小程序里的网站怎么做摄影网站排行
  • 阿里云网站备案登陆网站的功能设计
  • 个人做网站的注意事项江宁区住房建设局网站
  • 彩票网站开发是否合法wordpress添加干扰代码
  • 网上哪里有辅导高考生做难题的网站网络建设与管理是什么
  • 茂名市网站建设关键词免费下载
  • 做网站是否需要自购服务器官网建设费用入什么科目
  • 怎么在网上接网站开发的工作注册网站怎么注销
  • 高端型网站制作seo快速排名软件网站
  • 企业网站建设备案都需要什么帮别人做网站多少钱
  • 企业网站模板图片做铝锭的网站
  • 网站设计建设定制jquery 单击input输入框弹出选择框多用于人才类网站