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

wordpress 3.8.2诊断网站seo现状的方法

wordpress 3.8.2,诊断网站seo现状的方法,网站建设与管理大作业总结,火车头发布到wordpress背景 在支持插件/扩展的C/C系统中,通常会支持在程序运行时加载动态链接库。这时二进制程序会提供一些函数/接口让动态链接库调用,但是这些函数在二进制程序中又不会使用,导致在编译时编译器直接把这些符号删除了,加载链接库就会由…

背景

在支持插件/扩展的C/C++系统中,通常会支持在程序运行时加载动态链接库。这时二进制程序会提供一些函数/接口让动态链接库调用,但是这些函数在二进制程序中又不会使用,导致在编译时编译器直接把这些符号删除了,加载链接库就会由于找不到符号而失败。
本文将描述一种将仅在动态链接库中使用的符号如何暴露出来的方法。

方法描述

目标:将要导出的符号放到 .dynsym 区。

dlopen的动态链接库会去解析 .dynysm 区中的符号。

  1. 保留所有要导出的符号,以防被inline 或者被链接器删除掉
  2. 将符号都导出到 .dynsym

-rdynamic 编译选项也能解决这个问题,但是会导出一些不相关的符号,也会影响程序的优化。

假设需要保留的符号放在某一个静态链接库中,在编译二进制文件时,使用 -Wl,--whole-archive 可以将符号都保留下来,再使用 -Wl,--export-dynamic-symbol 命令导出相关符号,比如:

target_link_libraries(observerPUBLIClibalibb-Wl,--whole-archivelibkeep_symbols-Wl,--no-whole-archive-Wl,--export-dynamic-symbol=export_*)

链接器将会保留 -Wl,--whole-archive-Wl,--no-whole-archive 之间所有链接库的所有符号(注意要导出的符号不要让它inline 掉),使用 -Wl,--export-dynamic-symbol=export_* 命令导出所有 export_ 开头的符号(你可以编写其它的正则表达式)。

参考资料

  • 将符号放到.dynsym区中
  • 保留未使用的符号
  • WASM中关于符号导出的讨论
  • 可执行符号导出的问题讨论
  • lld 手册
  • cmake的enable_exports
  • lld 增加 --export-dynamic-symbol-list
  • Linux kernel export_symbol 解析

一些其它参考信息

Postgres中的做法

链接postgres的命令

gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -g -O0 access/brin/brin.o access/brin/brin_bloom.o access/brin/brin_inclusion.o ....... ../../src/timezone/strftime.o jit/jit.o ../../src/common/libpgcommon_srv.a ../../src/port/libpgport_srv.a -L../../src/port -L../../src/common   
-Wl,--as-needed -Wl,-rpath,'/root/github/postgres/debug/lib',
--enable-new-dtags
-Wl,--export-dynamic
-lm -o postgres

PostgreSQL使用 -Wl,--export-dynamic 解决了将符号放到 .dynsym 的问题(也可以参考 -rdynamic 编译选项)。但是这种方法会把所有相关的符号都放过去,因为PG是一个大部分模块都支持扩展的应用,符号都导出去没啥问题。

将符号保留在 .symtab

尝试过其它方法,比如将符号保留在 .symtab 区中,符号保留成功但是动态库引用不到。
当前的符号在.symtab区中:
在这里插入图片描述
在这里插入图片描述

使用 version-script 指定过符号是global但是dlopen依然由于找不到符号而打开失败, 这时obp_charset_ctype 符号已经在.symtab区域中
写脚本的方法是在编译 observer的时候增加选项:-Wl,--version-script=/data/project/src/observer/plugin_export.lds
在这里插入图片描述

ld链接器的一些参数

ld 有一些参数可能会用:

--dynamic-list-data         Add data symbols to dynamic list
--dynamic-list-cpp-new      Use C++ operator new/delete dynamic list
--dynamic-list-cpp-typeinfo Use C++ typeinfo dynamic list
--dynamic-list FILE         Read dynamic list

ld.lld 参数会有一些区别
(ld.lld 是LLVM针对gnu ld的替代品,速度更快)

链接选项增加:-Wl,--export-dynamic-symbol=obp_*
这时候这些符号都去了dynamic区了
在这里插入图片描述

http://www.yayakq.cn/news/405340/

相关文章:

  • 做的网站适应屏幕大小中国能源建设招标网站
  • 电商网站活动推广做美食网站的目的和意义
  • dede网站怎么备份喀什建设网站
  • 做图网站被告微信网站建设哪家好
  • 江阴市住房和城乡建设局网站舆情报告2023
  • 外国做电子产品网站有哪些html网站支付链接怎么做的
  • 大型企业网站建设制作wordpress媒体默认链接
  • 站长平台链接提交免费网络营销方式
  • 哪些网站可以做设计软件景区旅游网站平台建设
  • 九江专业网站建设定制建设银行江苏官网招聘网站
  • 怎么才能访问自己做的网站自考
  • 全国教育平台网站建设做婚礼邀请函网站
  • wordpress评论差价上海有什么seo公司
  • 什么网站的注册是动态公司简介通用模板
  • 高邮城乡建设局 网站重庆营销型网站设计
  • 网页版游戏排行榜田田田田田田田田2022年seo最新优化策略
  • 做网站的职位桂林小程序制作
  • cvv钓鱼网站怎么做有效方法的小企业网站建设
  • 有没有教做熟食的网站泰州建设企业网站
  • 企业网站建设可行性青岛大学网站建设
  • 工作室网站源码做网站用jsp还是j2ee
  • 供热设施网站搭建教程企业如何全面开展品牌工程建设
  • 企业服务网站建设方案WORDPRESS如何播放视频
  • 湖北城乡建设网站旅游网站建设的功能定位
  • 如何免费做网站详细点说滑板网页网站设计
  • 平面设计适合女生学吗网站优化推广服务
  • 南阳网站建设培训学校wordpress角色
  • struts2 做的网站游戏网站平台怎么做的
  • 58同城新密网站建设纳溪区城乡住房建设局网站
  • 网站单页在线制作软件山东省山东省建设厅网站首页