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

在线动画手机网站模板电子商务网站设计html模板

在线动画手机网站模板,电子商务网站设计html模板,网站建设 服务内容,扁平化的网站结构图1.前言 GCC编译器的手册(GCC MANUAL)的英文版已经非常全面#xff0c;并且结构也非常完善了#xff0c;只是一直都没有中文的版本#xff0c;我这次阅读了GCC编译器的主要内容#xff0c;对手册的内容进行了结构性的了解#xff0c;认为有必要对这次阅读的内容进行整理并且结构也非常完善了只是一直都没有中文的版本我这次阅读了GCC编译器的主要内容对手册的内容进行了结构性的了解认为有必要对这次阅读的内容进行整理为以后的工作做准备。 由于我对这个英文手册的阅读也仅仅是结构性的。因此有很多地方并没有看所以这篇文档的内容我也只能写出部分对于以后需要详细了解的地方会再往这篇文档中增添内容需要增添的内容主要是编译器的各种开关。 2. GCC功能介绍 GCC编译器完成从C、C、objective-C等源文件向运行在特定CPU硬件上的目标代码的转换这是任何一个编译器需要完成的任务。 GCC能够处理的源文件分为C、C、Objective-C、汇编语言等。对于这些源文件用他们的后缀名进行标示。GCC能够处理的后缀有 a. *.c  *.C      (C语言) b. *.cxx   *.cc  (C语言) c. *.m           (面向对象的C) d. *.i           (预处理后的C语言源文件) e. *.ii          (预处理后的C语言源文件) f. *.s *.S       (汇编语言) h. *.h         (头文件) 目标文件可以是 a. *.o     编译连接后的目标文件 b. *.a     库文件 编译器把编译生成目标代码的任务分为以下4步 a.预处理把预处理命令扫描处理完毕 b.编译把预处理后的结果编译成汇编或者目标模块 c.汇编把编译出来的结果汇编成具体CPU上的目标代码模块 d.连接把多个目标代码模块连接生成一个大的目标模块 3.  GCC开关 GCC的运行开关共分为11类这是类开关从11个方面控制着GCC程序的运行以达到特定的编译目的。 3.1.  全局开关(OVERALL OPTIONS) 全局开关用来控制在“GCC功能介绍”中的GCC的4个步骤的运行在缺省的情况下这4个步骤都是要执行的但是当给定一些全局开关后这些步骤就会在某一步停止执行这产生中间结果例如可能你只是需要中间生成的预处理的结果或者是汇编文件(比如拟的目的是为了看某个CPU上的汇编语言怎么写)。 3.1.1.  –x  language 对于源文件是用什么语言编写的可以通过文件名的后缀来标示也可以用这开关。指定输入文件是什么语言编写的language 可以是如下的内容 a.  c b. objective-c c. c-header d. c e.cpp-output f.assembler g.assembler-with-cpp 3.1.2.–x none 把上一节介绍的-x开关都给关掉了。 3.1.3.  –c 编译成把源文件目标代码不做连接的动作。 3.1.4. –S 把源文件编译成汇编代码不做汇编和连接的动作。 3.1.5. –E 只把源文件进行预处理之后的结果输出来。不做编译汇编连接的动作。 3.1.6.  –o file 指明输出文件名是file。 3.1.7. –v 把整个编译过程的输出信息都给打印出来。 3.1.8.–pipe 由于gcc的工作分为好几步才完成所以需要在过程中生成临时文件使用-pipe就是用管道替换临时文件。 3.2.  语言相关开关(Language Options) 用来处理和语言相关的控制开关。 3.2.1.–ansi 这个开关让GCC编译器把所有的gnu的编译器特性都给关掉让你的程序可以和ansi标准兼容。 除了以上的开关外语言相关开关还有很多如果在以后的工作学习中遇到了再加不迟3.3.预处理开关(Preprocessor Options) 用来控制预处理所设置的开关。 3.3.1. –include file 在编译之前把file包含进去相当于在所有编译的源文件最前面加入了一个#include file语句这样做更“省油”。 3.3.2. –imacros file 同-include file 一样。不过这个文件在具体编译的时候只有里面定义的宏才起作用所以值用来在file文件里面定义宏。 3.3.3. –nostdinc 在搜寻include 的文件路径中去掉标准的c语言头文件搜索路径例如stdio.h文件就是放在标准头文件搜索路径下。 3.3.4.  –nostdinc 同上只是去掉的是标准C语言的头文件搜索路径。 3.3.5. –C 同-E参数配合使用。让预处理后的结果把注释保留让人能够比较好读它。 3.3.6. –Dmacro 把macro定义为字符串’1’。 3.3.7. –Dmacro defn 把macro定义为defn。 3.3.8.  –Umacro 把对macro的定义取消。 除了以上的开关外预处理相关开关还有很多如果在以后的工作学习中遇到了再加不迟 3.4.   汇编开关(Assembler Option) 用来控制汇编行为的开关。 3.4.1.  –Wa , option 把option作为开关送给汇编程序。如果option里面有逗号则作为好几行进行处理。 3.5.连接开关(Linker Options) 用来控制连接过程的开关选项。 3.5.1. object-file-name 3.5.2. –llibrary 连接库文件开关。例如-lugl则是把程序同libugl.a文件进行连接。 3.5.3. –lobjc 这个开关用在面向对象的C语言文件的库文件处理中。 3.5.4.  –nostartfiles 在连接的时候不把系统相关的启动代码连接进来。 3.5.5.   –nostdlib 在连接的时候不把系统相关的启动文件和系统相关的库连接进来。 3.5.6. –static 在一些系统上支持动态连接这个开关则不允许动态连接。 3.5.7. –shared 生成可共享的被其他程序连接的目标模块。 连接相关的开关还有一些以后需要的时候再补。 3.6.目录相关开关(Directory Options) 用于定义与目录操作相关的开关。 3.6.1. –Idir 宏include需要搜寻的目录。 3.6.2.–I- 与-I开关类似。 3.6.3.–Ldir 搜寻库文件(*.a)的路径。 和目录相关的开关还有很多以后需要再加。 3.7. 警告开关(Warning Options) 与警告处理相关的开关。 3.7.1.–fsyntax-only 只检查代码中的语法错误但并没有输出。 3.7.2. –w 禁止一切警告信息打印出来。 3.7.3. –Wno-import 禁止对宏#import提出警告。 3.7.4. –pedantic 3.7.5.  –pedantic-errors 3.7.6.  –W 还有很多与警告处理相关的开关以后再补。 3.8. 调试开关(Debugging Options) 3.8.1.–g 把调试开关打开让编译的目标文件有调试信息。 还有很多与调试处理相关的开关以后再补。 3.9. 优化开关(Optimization Options) -O1 –O2 –O3 –O0这些开关分别控制优化的强度-O3最强。 3.10. 目标机开关(Target Options) 3.10.1. –b machine 在有的时候Gcc编译器编译出来的目标代码并不是在运行这个编译动作的机器上运行而是另外一台机器这种编译叫做交叉编译用来运行最终目标代码的得机器叫做目标机machine就是用来指明目标机的类型的。 3.10.2.  –V version 用来告诉编译器使用它的多少版本的功能version参数用来表示版本。 3.11.   CPU相关开关(Machine Dependent Options) 比较多也是在交叉编译的时候用得着。以后再说。 3.12. 生成代码开关(Code Generation Options)    ******************************************************************************************** GCC 使用指南 使用语法 gcc [ option | 20041012141827.htm ]...    g [ option | 20041012141827.htm ]... 其中 option 为 gcc 使用时的选项(后面会再详述)    而 20041012141827.htm 为欲以 gcc 处理的文件 说明 这 C 与 C 的 compiler 已将产生新程序的相关程序整合起来。产  生一个新的程序需要经过四个阶段预处理、编译、汇编、连结而这两 个编译器都能将输入的文件做不同阶段的处理。虽然原始程序的扩展名可 用来分辨编写原始程序码所用的语言但不同的compiler其预设的处理 程序却各不相同 gcc  预设经由预处理过(扩展名为.i)的文件为 C 语言并於程式       连结阶段以 C 的连结方式处理。 g  预设经由预处理过(扩展名为.i)的文件为 C 语言并於程 序连结阶段以 C 的连结方式处理。 原始程序码的扩展名指出所用编写程序所用的语言以及相对应的处  理方法 .c  C 原始程序             预处理、编译、汇编    .C  C 原始程序           预处理、编译、汇编    .cc   C 原始程序           预处理、编译、汇编    .cxx  C 原始程序           预处理、编译、汇编    .m  Objective-C 原始程序       预处理、编译、汇编    .i  已经过预处理之 C 原始程序     编译、汇编    .ii   已经过预处理之 C 原始程序    编译、汇编    .s  组合语言原始程序         汇编    .S  组合语言原始程序         预处理、汇编    .h  预处理文件(标头文件)       (不常出现在指令行) 其他扩展名的文件是由连结程序来处理通常有 .o  Object file    .a  Archive file 除非编译过程出现错误否则 连结 一定是产生一个新程序的最    後阶段。然而你也可以以 -c、-s 或 -E 等选项将整个过程自四    个阶段中的其中一个停止。在连结阶段所有与原始码相对应的    .o 文件、程序库、和其他无法自文件名辨明属性的文件(包括不以 .o    为扩展名的 object file 以及扩展名为 .a 的 archive file)都会    交由连结程序来处理(在指令行将那些文件当作连结程序的参数传给    连结程序)。 选项 不同的选项必须分开来下例如 -dr 这个选项就与 -d -r 大    不相同。 绝大部份的 -f 及 -W 选项都有正反两种形式-fname 及    -fno-name (或 -Wname 及 -Wno-name)。以下只列出非预设的那个    形式。 以下是所有选项的摘要。以形式来分类。选项的意义将另辟小节说    明。 一般性(概略、常用的)选项          -c -S -E -o file -pipe -v -x language 程序语言选项          -ansi -fall-virtual -fcond-mismatch          -fdollars-in-identifiers -fenum-int-equiv          -fexternal-templates -fno-asm -fno-builtin          -fno-strict-prototype -fsigned-bitfields          -fsigned-char -fthis-is-variable          -funsigned-bitfields -funsigned-char    -fwritable-strings -traditional -traditional-cpp -trigraphs 编译时的警告选项          -fsyntax-only -pedantic -pedantic-errors -w -W          -Wall -Waggregate-return -Wcast-align -Wcast-qual          -Wchar-subscript -Wcomment -Wconversion          -Wenum-clash -Werror -Wformat -Wid-clash-len          -Wimplicit -Winline -Wmissing-prototypes          -Wmissing-declarations -Wnested-externs -Wno-import          -Wparentheses -Wpointer-arith -Wredundant-decls          -Wreturn-type -Wshadow -Wstrict-prototypes -Wswitch          -Wtemplate-debugging -Wtraditional -Wtrigraphs          -Wuninitialized -Wunused -Wwrite-strings 除错选项          -a -dletters -fpretend-float -g -glevel -gcoff          -gxcoff -gxcoff -gdwarf -gdwarf -gstabs -gstabs          -ggdb -p -pg -save-temps -print-file-namelibrary          -print-libgcc-file-name -print-prog-nameprogram 最佳化选项          -fcaller-saves -fcse-follow-jumps -fcse-skip-blocks          -fdelayed-branch -felide-constructors          -fexpensive-optimizations -ffast-math -ffloat-store          -fforce-addr -fforce-mem -finline-functions          -fkeep-inline-functions -fmemoize-lookups          -fno-default-inline -fno-defer-pop          -fno-function-cse -fno-inline -fno-peephole          -fomit-frame-pointer -frerun-cse-after-loop          -fschedule-insns -fschedule-insns2          -fstrength-reduce -fthread-jumps -funroll-all-loops          -funroll-loops -O -O2 预处理选项          -Aassertion -C -dD -dM -dN -Dmacro[defn] -E -H          -idirafter dir -include file -imacros file -iprefix          file -iwithprefix dir -M -MD -MM -MMD -nostdinc -P          -Umacro -undef 汇编程序选项          -Wa,option 连结程序选项          -llibrary -nostartfiles -nostdlib -static -shared          -symbolic -Xlinker option -Wl,option -u symbol 目录选项          -Bprefix -Idir -I- -Ldir Target Options          -b  machine -V version 与机器(平台)相关的选项          M680x0 Options          -m68000 -m68020 -m68020-40 -m68030 -m68040 -m68881          -mbitfield -mc68000 -mc68020 -mfpa -mnobitfield          -mrtd -mshort -msoft-float VAX Options          -mg -mgnu -munix SPARC Options          -mepilogue -mfpu -mhard-float -mno-fpu          -mno-epilogue -msoft-float -msparclite -mv8          -msupersparc -mcypress Convex Options          -margcount -mc1 -mc2 -mnoargcount AMD29K Options          -m29000 -m29050 -mbw -mdw -mkernel-registers          -mlarge -mnbw -mnodw -msmall -mstack-check          -muser-registers M88K Options          -m88000 -m88100 -m88110 -mbig-pic          -mcheck-zero-division -mhandle-large-shift          -midentify-revision -mno-check-zero-division          -mno-ocs-debug-info -mno-ocs-frame-position          -mno-optimize-arg-area -mno-serialize-volatile          -mno-underscores -mocs-debug-info          -mocs-frame-position -moptimize-arg-area          -mserialize-volatile -mshort-data-num -msvr3 -msvr4          -mtrap-large-shift -muse-div-instruction          -mversion-03.00 -mwarn-passed-structs RS6000 Options          -mfp-in-toc -mno-fop-in-toc RT Options          -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs          -mfull-fp-blocks -mhc-struct-return -min-line-mul          -mminimum-fp-blocks -mnohc-struct-return MIPS Options          -mcpucpu type -mips2 -mips3 -mint64 -mlong64          -mlonglong128 -mmips-as -mgas -mrnames -mno-rnames          -mgpopt -mno-gpopt -mstats -mno-stats -mmemcpy          -mno-memcpy -mno-mips-tfile -mmips-tfile          -msoft-float -mhard-float -mabicalls -mno-abicalls          -mhalf-pic -mno-half-pic -G num -nocpp i386 Options          -m486 -mno-486 -msoft-float -mno-fp-ret-in-387 HPPA Options          -mpa-risc-1-0 -mpa-risc-1-1 -mkernel -mshared-libs          -mno-shared-libs -mlong-calls -mdisable-fpregs          -mdisable-indexing -mtrailing-colon i960 Options          -mcpu-type -mnumerics -msoft-float          -mleaf-procedures -mno-leaf-procedures -mtail-call          -mno-tail-call -mcomplex-addr -mno-complex-addr          -mcode-align -mno-code-align -mic-compat          -mic2.0-compat -mic3.0-compat -masm-compat          -mintel-asm -mstrict-align -mno-strict-align          -mold-align -mno-old-align DEC Alpha Options          -mfp-regs -mno-fp-regs -mno-soft-float -msoft-float System V Options          -G -Qy -Qn -YP,paths -Ym,dir Code Generation Options          -fcall-saved-reg -fcall-used-reg -ffixed-reg          -finhibit-size-directive -fnonnull-objects          -fno-common -fno-ident -fno-gnu-linker          -fpcc-struct-return -fpic -fPIC          -freg-struct-returno -fshared-data -fshort-enums          -fshort-double -fvolatile -fvolatile-global          -fverbose-asm PRAGMAS    Two  #pragma  directives  are  supported for GNU C, to    permit using the same header file for two purposes:  as  a    definition  of  interfaces to a given object class, and as    the full definition of the contents of that object  class. #pragma interface          (C  only.)   Use  this  directive in header files          that define object classes, to save space  in  most          of  the  object files that use those classes.  Nor-          mally, local copies of certain information  (backup          copies of inline member functions, debugging infor-          mation, and the internal tables that implement vir-          tual  functions)  must  be kept in each object file          that includes class definitions.  You can use  this          pragma  to  avoid  such duplication.  When a header          file containing #pragma interface is included  in          a  compilation, this auxiliary information will not          be generated (unless the main input source file it-          self  uses #pragma implementation).  Instead, the          object files will contain references to be resolved          at link time. #pragma implementation #pragma implementation objects.h          (C  only.)  Use this pragma in a main input file,          when you want  full  output  from  included  header          files  to be generated (and made globally visible).          The included  header  file,  in  turn,  should  use          #pragma  interface.  Backup copies of inline mem-          ber functions, debugging information, and nbsp; the  in-  ternal  tables  used to implement virtual functions          are all generated in implementation files. If you use #pragma implementation with  no  argu-          ment,  it  applies to an include file with the same          basename as  your  source  file;  for  example,  in          allclass.cc,  #pragma  implementation by itself          is   equivalent  to  #pragma  implementation          allclass.h.  Use the string argument if you want          a single implementation file to include  code  from          multiple header files. There  is no way to split up the contents of a sin-          gle header file into multiple implementation files. 文件说明    file.c       C source file    file.h       C header (preprocessor) file    file.i       经预处理过的 C source file    file.C       C source file    file.cc      C source file    file.cxx    C source file    file.m       Objective-C source file    file.s       assembly language file    file.o       object file    a.out        link edited output    TMPDIR/cc*     temporary files    LIBDIR/cpp     preprocessor    LIBDIR/cc1     compiler for C    LIBDIR/cc1plus   compiler for C    LIBDIR/collect   linker front end needed on some machines    LIBDIR/libgcc.a  GCC subroutine library    /lib/crt[01n].o  start-up routine    LIBDIR/ccrt0  additional start-up routine for C    /lib/libc.a    standard C library, 参阅 man page intro(3)    /usr/include  standard directory for #include files    LIBDIR/include   standard gcc directory for #include files    LIBDIR/g-include additional g directory for #include LIBDIR is usually /usr/local/lib/machine/version.    TMPDIR comes from the environment variable TMPDIR (default    /usr/tmp if available, else /tmp).  gcc命令行详解 1.gcc包含的c/c编译器 gcc,cc,c,g,gcc和cc是一样的c和g是一样的。一般c程序就用gcc编译c程序就用g编译。 2.gcc的基本用法 gcc test.c这样将编译出一个名为a.out的程序 gcc test.c -o test这样将编译出一个名为test的程序-o参数用来指定生成程序的名字 3.为什么会出现undefined reference to xxxxx错误 首先这是链接错误不是编译错误也就是说如果只有这个错误说明你的程序源码本身没有问题是你用编译器编译时参数用得不对你没有指定链接程序要用到得库比如你的程序里用到了一些数学函数那么你就要在编译参数里指定程序要链接数学库方法是在编译命令行里加入-lm。 4.-l参数和-L参数 -l参数 就是用来指定程序要链接的库-l参数紧接着就是库名那么库名跟真正的库文件名有什么关系呢就拿数学库来说他的库名是m他的库文件名是libm.so很容易看出把库文件名的头lib和尾.so去掉就是库名了。 好了现在我们知道怎么得到库名了比如我们自已要用到一个第三方提供的库名字叫libtest.so那么我们只要把libtest.so拷贝到/usr/lib里编译时加上-ltest参数我们就能用上libtest.so库了当然要用libtest.so库里的函数我们还需要与libtest.so配套的头文件。 放在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接了但如果库文件没放在这三个目录里而是放在其他目录里这时我们只用-l参数的话链接还是会出错出错信息大概是“/usr/bin/ld: cannot find -lxxx”也就是链接程序ld在那3个目录里找不到libxxx.so这时另外一个参数-L就派上用场了比如常用的X11的库它放在/usr/X11R6/lib目录下我们编译时就要用-L/usr/X11R6/lib -lX11参数-L参数跟着的是库文件所在的目录名。再比如我们把libtest.so放在/aaa/bbb/ccc目录下那链接参数就是-L/aaa/bbb/ccc -ltest 另外大部分libxxxx.so只是一个链接以RH9为例比如libm.so它链接到/lib/libm.so.x/lib/libm.so.6又链接到/lib/libm-2.3.2.so如果没有这样的链接还是会出错因为ld只会找libxxxx.so所以如果你要用到xxxx库而只有libxxxx.so.x或者libxxxx-x.x.x.so做一个链接就可以了ln -s libxxxx-x.x.x.so libxxxx.so 手工来写链接参数总是很麻烦的还好很多库开发包提供了生成链接参数的程序名字一般叫xxxx-config一般放在/usr/bin目录下比如gtk1.2的链接参数生成程序是gtk-config执行 gtk-config --libs 就能得到以下输出 -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm 这就是编译一个gtk1.2程序所需的gtk链接参数xxx-config除了--libs参数外还有一个参数是--cflags用来生成头文件包含目录的也就是-I参数在下面我们将会讲到。你可以试试执行gtk-config --libs --cflags看看输出结果。现在的问题就是怎样用这些输出结果了最笨的方法就是复制粘贴或者照抄聪明的办法是在编译命令行里加入这个xxxx-config --libs --cflags比如编译一个gtk程序gcc gtktest.c gtk-config --libs --cflags这样就差不多了。注意不是单引号而是1键左边那个键。 除了xxx-config以外现在新的开发包一般都用pkg-config来生成链接参数使用方法跟xxx-config类似但xxx-config是针对特定的开发包但pkg-config包含很多开发包的链接参数的生成用pkg-config --list-all命令可以列出所支持的所有开发包pkg-config的用法就是pkg-config pagName --libs --cflags其中pagName是包名是pkg-config--list-all里列出名单中的一个比如gtk1.2的名字就是gtkpkg-config gtk --libs --cflags的作用跟gtk-config --libs --cflags是一样的。比如gcc gtktest.c pkg-config gtk --libs --cflags。 5.-include和-I参数 -include用来包含头文件但一般情况下包含头文件都在源码里用i nclude xxxxxx实现-include参数很少用。-I参数是用来指定头文件目录/usr/include目录一般是不用指定的gcc知道去那里找但是如果头文件不在/usr/include里我们就要用-I参数指定了比如头文件放在/myinclude目录里那编译命令行就要加上-I/myinclude参数了如果不加你会得到一个xxxx.h: No such file or directory的错误。-I参数可以用相对路径比如头文件在当前目录可以用-I.来指定。上面我们提到的--cflags参数就是用来生成-I参数的。 6.-O参数 这是一个程序优化参数一般用-O2就是用来优化程序用的比如gcc test.c -O2优化得到的程序比没优化的要小执行速度可能也有所提高我没有测试过。 7.-shared参数 编译动态库时要用到比如gcc -shared test.c -o libtest.so 8.几个相关的环境变量 PKG_CONFIG_PATH用来指定pkg-config用到的pc文件的路径默认是/usr/lib/pkgconfigpc文件是文本文件扩展名是.pc里面定义开发包的安装路径Libs参数和Cflags参数等等。 CC用来指定c编译器。CXX用来指定cxx编译器。LIBS跟上面的--libs作用差不多。CFLAGS:跟上面的--cflags作用差不多。 CCCXXLIBSCFLAGS手动编译时一般用不上在做configure时有时用到一般情况下不用管。 环境变量设定方法 export ENV_NAMExxxxxxxxxxxxxxxxx 9.关于交叉编译 交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上比如在我们地PC平台(X86 CPU)上编译出能运行在sparc CPU平台上的程序编译得到的程序在X86 CPU平台上是不能运行的必须放到sparc CPU平台上才能运行。当然两个平台用的都是linux。这种方法在异平台移植和嵌入式开发时用得非常普遍。 相对与交叉编译我们平常做的编译就叫本地编译也就是在当前平台编译编译得到的程序也是在本地执行。 用来编译这种程序的编译器就叫交叉编译器相对来说用来做本地编译的就叫本地编译器一般用的都是gcc但这种gcc跟本地的gcc编译器是不一样的需要在编译gcc时用特定的configure参数才能得到支持交叉编译的gcc。 为了不跟本地编译器混淆交叉编译器的名字一般都有前缀比如sparc-xxxx-linux-gnu-gccsparc-xxxx-linux-gnu-g 等等 10.交叉编译器的使用方法 使用方法跟本地的gcc差不多但有一点特殊的是必须用-L和-I参数指定编译器用sparc系统的库和头文件不能用本地(X86)的库头文件有时可以用本地的。 例子 sparc-xxxx-linux-gnu-gcc test.c -L/path/to/sparcLib -I/path/to/sparcInclude
http://www.zqtcl.cn/news/311790/

相关文章:

  • 怎么设计公司的网站长沙seo结算
  • 参加网站建设项目人员保障体系镇江网站建设门户报价
  • 漯河网站优化景区网站建设方案
  • 辽宁智能网站建设价位wordpress 公司主题
  • zencart 网站入侵冲电气软件 网站建设
  • 在网上做黑彩网站会怎样wordpress自定义代码在哪里设置
  • 福州营销网站建设老品牌网站开通
  • 电子商务网站体系结构有哪些?网站开发规划书怎么写
  • 建设一个网站要多少钱建设银行信用卡卡网站首页
  • 百度推广效果怎样seo网上培训课程
  • 广州品牌网站建设 优美wordpress 跳转页面
  • 成都专业的网站建设制作公司哪家好m3u8视频可以永久保存吗
  • 上海做兼职的网站如何在凡科建设网站
  • 沙朗镇做网站公司企业管理咨询师是干什么的
  • 起名网站建设商汇通网站
  • 网站开发费税率是多少钱建设小网站教程
  • 企业制作网站服务物联网应用有哪些
  • 中国建设网站银行个人做网站要注意什么条件
  • 莆田哪里有学做网站的wordpress可视化函数
  • 网站规划书500字上海金融网站制作网站制作公司好
  • 郑州网站制做钓鱼网站的公司
  • 网站域名授权怎么做以鹦鹉做头像的网站
  • 后端开发网站做一些什么WordPress能做门户网吗
  • 石家庄市住房和城乡建设厅网站好的企业型网站模板下载
  • 哈尔滨快速建站公司推荐网站刷流量会怎么样
  • 网站开发 顺德做新闻微网站有哪些
  • 如何阿里巴巴网站做推广苏州高新区建设局网站管网
  • 个人网站设计构思做汽车保养的网站
  • 在什么网站可以接国外的模具做中英文网站是怎么做的
  • 网站中的文字滑动怎么做的沈阳模板建站定制