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

织梦网站做404页面国内能用wordpress吗

织梦网站做404页面,国内能用wordpress吗,网站推广产品,北京各大网站推广服务公司一、GCC简介 GCC#xff08;GNU Compiler Collection#xff09;是 GNU 工具链的主要组成部分#xff0c;是一套以 GPL 和 LGPL 许可证发布的程序语言编译器自由软件#xff0c;由 Richard Stallman 于 1985 年开始开发。 GCC 原名为 GNU C语言编译器#xff0c;因为它原本…一、GCC简介 GCCGNU Compiler Collection是 GNU 工具链的主要组成部分是一套以 GPL 和 LGPL 许可证发布的程序语言编译器自由软件由 Richard Stallman 于 1985 年开始开发。 GCC 原名为 GNU C语言编译器因为它原本只能处理 C 语言但如今的 GCC 不仅可以编译 C、C 和 Objective-C还可以通过不同的前端模块支持各种语言包括 Java、Fortran、Ada、Pascal、Go 和 D 语言等等。 GCC 的编译过程可以划分为四个阶段 预处理Pre-Processing生成 .i 的文件[预处理器cpp] 编译Compiling  将预处理后的文件转换成汇编语言, 生成文件 .s [编译器egcs] 汇编Assembling  由汇编变为目标代码(机器代码)生成 .o 的文件[汇编器as] 链接生成可执行文件Linking [链接器ld]   安装 # 安装c编译器linux需安装python-devel, gcc centos: yum install python-devel  gcc ubuntu: apt-get install build-essential 二、GCC使用 nistzq-node2:~/test$ gcc --help Usage: gcc [options] file... Options:-pass-exit-codes         从一个阶段以最高错误代码退出.--help                   Display this information.--target-help            显示特定于目标的命令行选项.--help{common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...].显示特定类型的命令行选项.(使用 -v --help 显示子进程的命令行选项).--version                显示编译器版本信息.-dumpspecs               显示所有内置规范字符串.-dumpversion             显示编译器的版本.-dumpmachine             显示编译器的目标处理器.-print-search-dirs       显示编译器搜索路径中的目录.-print-libgcc-file-name  显示编译器配套库的名称.-print-file-namelib   显示库 lib 的完整路径.-print-prog-nameprog  显示编译器组件 prog 的完整路径.-print-multiarch         显示目标的规范化 GNU 三元组用作库路径中的一个组件.-print-multi-directory   显示 libgcc 版本的根目录.-print-multi-lib         显示命令行选项和多个库搜索目录之间的映射.-print-multi-os-directory 显示操作系统库的相对路径.-print-sysroot           显示目标库目录.-print-sysroot-headers-suffix 显示用于查找headers的sysroot后缀.-Wa,options            将逗号分隔的 options 传递给汇编器assembler.-Wp,options            将逗号分隔的 options 传递给预处理器preprocessor-Wl,options            将逗号分隔的 options 传递给链接器linker-Xassembler arg        将 arg 传递给汇编器assembler.-Xpreprocessor arg     将 arg 传递给预处理器preprocessor.-Xlinker arg           将 arg 传递给链接器linker.-save-temps              不用删除中间文件.-save-tempsarg        不用删除指定的中间文件.-no-canonical-prefixes   在构建其他 gcc 组件的相对前缀时不要规范化路径.-pipe                    使用管道而不是中间文件-time                    为每个子流程的执行计时.-specsfile            使用 file 的内容覆盖内置规范.-stdstandard          假设输入源用于standard。--sysrootdirectory    使用standard作为headers和libraries的根目录.-B directory           将 directory 添加到编译器的搜索路径.-v                       显示编译器调用的程序.-###                     与 -v 类似但引用的选项和命令不执行.-E                       仅执行预处理不要编译、汇编或链接.-S                       只编译不汇编或链接.-c                       编译和汇编但不链接.-o file                指定输出文件. gcc 编译出来的文件默认是 a.out-pie                     创建一个动态链接、位置无关的可执行文件-shared                  创建共享库/动态库.-g                     生成调试信息-w                       不生成任何警告-Wall                    编译时 显示Warning警告但只会显示编译器认为会出现错误的警告-x language         指定以下输入文件的语言。允许的语言包括c c汇编程序none“none”表示恢复到的默认行为根据文件的扩展名猜测语言。 Options starting with -g, -f, -m, -O, -W, or --param are automaticallypassed on to the various sub-processes invoked by gcc.  In order to passother options on to these processes the -Wletter options must be used. For bug reporting instructions, please see: file:///usr/share/doc/gcc-9/README.Bugs.-shared: 编译动态库时要用到 -pthread: 在Linux中要用到多线程时需要链接pthread库 -fPIC: 作用于编译阶段告诉编译器产生与位置无关代码(Position-Independent Code) 则产生的代码中没有绝对地址全部使用相对地址故而代码可以被加载器加载到内存的任意 位置都可以正确的执行。这正是共享库所要求的共享库被加载时在内存的位置不是固定的。 -fwrapv: 它定义了溢出时候编译器的行为——采用二补码的方式进行操作 -O参数 这是一个程序优化参数一般用-O2就是用来优化程序用的 -O2 会尝试更多的寄存器级的优化以及指令级的优化它会在编译期间占用更多的内存和编译时间。 -O3 在O2的基础上进行更多的优化 -Wall: 编译时 显示Warning警告,但只会显示编译器认为会出现错误的警告 -fno-strict-aliasing: “-fstrict-aliasing”表示启用严格别名规则“-fno-strict-aliasing”表示禁用严格别名规则当gcc的编译优化参数为“-O2”、“-O3”和“-Os”时默认会打开“-fstrict-aliasing”。 -I (大写的i): 是用来指定头文件目录 -I /home/hello/include表示将/home/hello/include目录作为第一个寻找头文件的目录寻找的顺序是/home/hello/include--/usr/include--/usr/local/include -l: -l(小写的 L)参数就是用来指定程序要链接的库-l参数紧接着就是库名,把库文件名的头lib和尾.so去掉就是库名了,例如我们要用libtest.so库库编译时加上-ltest参数就能用上了 2.1、gcc编译的四个步骤  (10条消息) Linux下gcc命令详解_linux gcc_ENSHADOWER的博客-CSDN博客 预处理            gcc -E Test.c -o Test.i    # -E选项可以让编译器在预处理后停止并输出预处理结果 编译              gcc -S Test.i -o Test.s    # -S选项表示在程序编译期间将我们的代码编译成汇编语言。 汇编              gcc -c Test.s -o Test.o    # -c选项表示由汇编器负责将刚才的.s文件编译为目标文件即计算机所能识别的序列。 链接生成可执行文件 gcc Test.o -o Test         # 将刚才的Test.o文件与标准输入输出库进行连接最终生成程序Test可执行文件 2.2、多源文件的编译方法 [假设有两个源文件为test.c和testfun.c] 1. 多个文件一起编译 用法 gcc testfun.c test.c -o test 作用将testfun.c和test.c分别编译后链接成test可执行文件。 2. 分别编译各个源文件之后对编译后输出的目标文件链接 用法 gcc -c testfun.c -o testfun.o    # 将testfun.c编译成testfun.o gcc -c test.c -o test.o           # 将test.c编译成test.o gcc -o testfun.o test.o -o test    # 将testfun.o和test.o链接成test 以上两种方法相比较第一中方法编译时需要所有文件重新编译而第二种方法可以只重新编译修改的文件未修改的文件不用重新编译。 2.3、库文件连接 开发软件是需要依赖第三方函数库。 函数库实际上就是一些头文件.h和库文件so、或lib、dll的集合。 虽然Linux下的大多数函数都默认将头文件放到/usr/include/目录下而库文件则放到/usr/lib/目录下Windows所使用的库文件主要放在Visual Stido的目录下的include和lib以及系统文件夹下。但也有的时候我们要用的库不再这些目录下所以GCC在编译时必须用自己的办法来查找所需要的头文件和库文件。 例如我们的程序test.c是在linux上使用c连接mysql这个时候我们需要去mysql官网下载MySQL Connectors的C库下载下来解压之后有一个include文件夹里面包含mysql connectors的头文件还有一个lib文件夹里面包含二进制so文件libmysqlclient.so 其中inclulde文件夹的路径是/usr/dev/mysql/includelib文件夹是/usr/dev/mysql/lib 静态库链接时搜索路径顺序 ld会去找GCC命令中的参数-L 再找gcc的环境变量LIBRARY_PATH 再找内定目录 /lib、  /usr/lib、   /usr/local/lib 这是当初compile gcc时写在程序内的 动态链接时、执行时搜索路径顺序: 编译目标代码时指定的动态库搜索路径 环境变量LD_LIBRARY_PATH指定的动态库搜索路径 配置文件/etc/ld.so.conf中指定的动态库搜索路径 默认的动态库搜索路径/lib 默认的动态库搜索路径/usr/lib 有关环境变量 LIBRARY_PATH环境变量指定程序静态链接库文件搜索路径 LD_LIBRARY_PATH环境变量指定程序动态链接库文件搜索路径 三、示例 3.1、阶段编译 假设有文件 hello.c内容如下 #include stdio.hint main(void) {printf(Hello, GetIoT\n);return 0; } 1、编译 hello.c默认输出 a.out gcc hello.c 编译 hello.c 并指定输出可执行文件为 hello gcc hello.c -o hello 2、只执行预处理输出 hello.i 源文件 gcc -E hello.c -o hello.i 3、只执行预处理和编译输出 hello.s 汇编文件 gcc -S hello.c -o hello.s 也可以由 hello.i 文件生成 hello.s 汇编文件 gcc -S hello.i -o hello.s 4、只执行预处理、编译和汇编输出 hello.o 目标文件 gcc -c hello.c -o hello.o 也可以由 hello.i 或 hello.s 生成目标文件 hello.o gcc -c hello.i -o hello.o gcc -c hello.s -o hello.o 5、由 hello.o 目标文件链接成可执行文件 hello gcc hello.o -o hello 3.2、使用静态库 创建一个 foo.c 文件内容如下 #include stdio.hvoid foo(void) {printf(Here is a static library\n); } 将 foo.c 编译成静态库 libfoo.a gcc -c foo.c           # 生成 foo.o 目标文件 ar rcs libfoo.a foo.o  # 生成 libfoo.a 静态库 查看文件描述 $ file * 修改 hello.c 文件调用 foo 函数 #include stdio.h void foo(void);int main(void) {printf(Hello, GetIoT\n);foo();return 0; } 编译 hello.c 并链接静态库 libfoo.a加上 -static 选项 gcc hello.c -static libfoo.a -o hello 也可以使用  -L  指定库的搜索路径并使用  -l  指定库名 gcc hello.c -static -L. -lfoo -o hello 运行结果 $ ./hello 查看 hello 文件描述 $ file hello hello: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, BuildID[sha1]f20be3e93d3c316877bbe4292f5ee7e06cf77f27, for GNU/Linux 3.2.0, not stripped 3.3、使用共享库 修改 foo.c 文件内容如下 #include stdio.hvoid foo(void) {printf(Here is a shared library\n); } 将其编译为动态库/共享库由于动态库可以被多个进程共享加载所以需要使用 -fPIC 选项生成位置无关的代码 gcc foo.c -shared -fPIC -o libfoo.so hello.c 代码无需修改内容仍然如下 #include stdio.h void foo(void);int main(void) {printf(Hello, GetIoT\n);foo();return 0; } 编译 hello.c 并链接共享库 libfoo.so gcc hello.c  libfoo.so -o hello 也可以使用 -L 和 -l 选项指定库的路径和名称 gcc hello.c -L. -lfoo -o hello 但是此时运行 hello 程序失败 $ ./hello ./hello: error while loading shared libraries: libfoo.so: cannot open shared object file: No such file or directory 原因是找不到 libfoo.so 共享库 $ ldd hello linux-vdso.so.1 (0x00007fff5276d000) libfoo.so not found libc.so.6 /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcc90fa7000) /lib64/ld-linux-x86-64.so.2 (0x00007fcc911bd000) 这是因为 libfoo.so 并不在 Linux 系统的默认搜索目录中解决办法是我们主动告诉系统libfoo.so 共享库在哪里 。 方式一 设置环境变量  LD_LIBRARY_PATH export LD_LIBRARY_PATH$(pwd) 将 libfoo.so 所在的当前目录添加到  LD_LIBRARY_PATH  变量再次执行 hello $ ./hello Hello, GetIoT Here is a shared library 方式二 使用 rpath 将共享库位置嵌入到程序 gcc hello.c -L. -lfoo -Wl,-rpathpwd -o hello rpath 即 run path是种可以将共享库位置嵌入程序中的方法从而不用依赖于默认位置和环境变量。这里在链接时使用  -Wl,-rpath/path/to/yours  选项 -Wl  会发送以逗号分隔的选项到链接器注意逗号分隔符后面没有空格哦。 这种方式要求共享库必须有一个固定的安装路径欠缺灵活性不过如果设置了  LD_LIBRARY_PATH 程序加载时也是会到相应路径寻找共享库的。 方式三 将 libfoo.so 共享库添加到系统路径 sudo cp libfoo.so /usr/lib/ 执行程序 $ ./hello Hello, GetIoT Here is a shared library 如果 hello 程序仍然运行失败请尝试执行  ldconfig  命令更新共享库的缓存列表。 此时再次查看 hello 程序的共享库依赖 $ ldd hello linux-vdso.so.1 (0x00007ffecfbb1000) libfoo.so /lib/libfoo.so (0x00007f3f3f1ad000) libc.so.6 /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3f3efbb000) /lib64/ld-linux-x86-64.so.2 (0x00007f3f3f1d6000) 可以看到 libfoo.so 已经被发现了其中 /lib 是 /usr/lib 目录的软链接 。 示例代码可以在  GitHub  找到。
http://www.w-s-a.com/news/110589/

相关文章:

  • 建网站首页图片哪里找263企业邮箱网页版登录
  • 盐城网站建设电话高端定制网站
  • 成都网站seo技术施工企业样板先行制度
  • 高端网站建设电话河北建筑工程信息网站
  • 亲 怎么给一个网站做备份财务系统有哪些软件
  • wordpress重新手机优化专家下载
  • 怎样把网站做成软件设计工作室怎么接单
  • html网站设计实例代码重庆多个区划定风险区
  • 推广方案设计同一个网站可以同时做竞价和优化
  • 论坛网站开发 go电商扶贫网站建设
  • 个人建站教程优秀的定制网站建设
  • 农村建设集团有限公司网站下载百度极速版
  • 微信公众号个人可以做网站么做企业网站需要哪些
  • 如何用付费音乐做视频网站wordpress如何设置首页
  • 杨凯做网站网站首页 排版
  • 网站图片标签江苏省建设类高工申报网站
  • 网站建设中的英文什么网站可以做医疗设备的
  • 柳州购物网站开发设计服装网站的建设与管理
  • 做网站的上海市哪家技术好北京百姓网免费发布信息
  • 网站文章排版制作网站软件
  • 云南网站开发公司网站商城定制网站建设
  • 企业网站的新闻资讯版块有哪些肇庆自助建站模板
  • 怎么做平台网站吗为网站做seo需要什么
  • 苏州吴江建设局招标网站海南网站搭建价格
  • 网站建设主要研究内容用哪个程序做网站收录好
  • 网站建设如何开单装修设计图免费
  • 做内容网站赚钱吗seo推广具体做什么
  • 连山区网站建设seo简历
  • 自助建站系统官方版太仓高端网站制作
  • 怎样只做自己的网站建设银行唐山分行网站