Firefox 源码文档 Logo

快速搜索

概述

  • 常用术语词汇表
  • Mozilla 应用程序快速指南

入门

  • 设置 Firefox 代码库工作环境

参与 Firefox 开发

  • 参与 Firefox 开发
  • Bug 处理

Firefox 用户指南

  • Firefox DevTools 用户文档

源代码文档

  • 治理
  • Firefox 前端
  • DOM
  • 编辑器
  • 样式系统 (CSS) & 布局
  • 图形
  • 进程、线程和 IPC
  • Firefox DevTools 贡献者文档
  • 工具包
  • SpiderMonkey
  • GeckoView
  • Fenix
  • Focus for Android
  • WebIDL
  • libpref
  • 网络
  • 远程协议
  • 服务
  • 文件处理
  • macOS 上的 Firefox
  • Windows 上的 Firefox
  • Firefox AI 平台
  • 辅助功能
  • 代码质量
  • 编写 Rust 代码
  • Rust 组件
  • Gecko Profiler
  • 性能
  • 数据库绑定 (SQLite、KV 等)
  • XPCOM
  • NSPR
  • 网络安全服务 (NSS)
  • Gecko 中的 Web 安全检查

Firefox 构建系统

  • Mach
  • 推送到 Try
  • 构建系统
  • Firefox CI 和 Taskgraph
  • 文档管理
  • 引入第三方组件

测试 & 测试基础设施

  • 自动化测试
  • 理解 Treeherder 结果
  • 定期检查间歇性故障
  • 为新配置启用 Firefox 测试
  • 避免间歇性测试
  • 测试策略
  • 配置更改
  • 浏览器 chrome mochitests
  • Chrome 测试
  • Marionette
  • geckodriver
  • 测试验证
  • WebRender 测试
  • Mochitest
  • XPCShell 测试
  • TPS
  • web-platform-tests
  • GTest
  • 模糊测试
  • Sanitizer
  • 性能测试
  • 代码覆盖率
  • 测试 & 调试 Rust 代码

发布 & 更新

  • Mozilla 更新基础设施
  • Watershed 更新
  • 停用更新

本地化 & 国际化

  • 国际化
  • 本地化

Firefox 和 Python

  • mozbase
  • 使用第三方 Python 包

Firefox 中收集的指标

  • 指标
Firefox 源码文档
  • 动态库搜索
  • 报告问题 / 查看页面源代码

动态库搜索¶

本节介绍 NSPR 加载、卸载和解析动态库中符号的编程接口。它还提供了一种方法,用于调整静态链接代码的符号,使其对其他客户端看起来像是动态加载的。

库链接类型¶

这些数据类型被定义用于动态库链接

  • PRLibrary

  • PRStaticLinkTable

库链接函数¶

库链接函数包括:

  • PR_SetLibraryPath

  • PR_GetLibraryPath

  • PR_GetLibraryName

  • PR_FreeLibraryName

  • PR_LoadLibrary

  • PR_UnloadLibrary

  • PR_FindSymbol

  • PR_FindSymbolAndLibrary

查找主可执行程序中定义的符号¶

PR_LoadLibrary 无法打开引用主可执行程序的句柄。(这确实是一个应该修复的遗漏。)但是,可以通过以下方式查找在主可执行程序中定义的符号。

PRLibrary *lib;
void *funcPtr;

funcPtr = PR_FindSymbolAndLibrary("FunctionName", &lib);

当 PR_FindSymbolAndLibrary 返回时,funcPtr 是您要查找的函数指针的值,变量 lib 引用主可执行程序。然后,您可以对 lib 调用 PR_FindSymbol 以查找在主程序中定义的其他符号。请记住,在完成操作后,调用 PR_UnloadLibrary(lib) 关闭库句柄。

平台说明¶

要在某些平台上使用动态库加载函数,必须在运行时设置某些环境变量,并且您可能需要使用特殊的链接器选项来链接您的可执行程序。

本节总结了这些平台的特性。有关更多信息,请参阅 Unix 的 ld 和 dlopen(或 HP-UX 上的 shl_load)的手册页,以及 Win32 的 LoadLibrary 文档。

  • 动态库搜索路径

  • 从主可执行程序导出符号

动态库搜索路径¶

动态库搜索路径是在其中查找动态库的目录列表。每个平台都有自己的标准目录,用于查找动态库,以及由环境变量指定的可自定义的目录列表。

  • 在大多数 Unix 系统上,此环境变量是 LD_LIBRARY_PATH。这些系统通常使用 dlopen 加载动态库。

  • HP-UX 使用 shl_load 加载动态库,指定动态库搜索路径的环境变量是 SHLIB_PATH。此外,可执行程序必须链接 +s 选项,以便在运行时搜索 SHLIB_PATH 指定的目录中的共享库。或者,您可以使用 chatr 工具将 +s 选项作为后处理步骤启用。例如,在不使用 +s 选项的情况下链接您的可执行程序 a.out,然后执行以下操作

chatr +s enable a.out
  • 在 Rhapsody 上,环境变量是 DYLD_LIBRARY_PATH。

  • 在 Win32 上,环境变量是 PATH。相同的搜索路径用于搜索可执行程序和 DLL。

从主可执行程序导出符号¶

在某些系统上,主可执行程序中定义的符号默认情况下不会导出。在 HP-UX 上,您必须使用 -E 链接器选项链接可执行程序,以便将主程序中的所有符号导出到共享库。如果您使用 GNU 编译器(在任何平台上),您也必须使用 -E 选项链接可执行程序。


使用 Sphinx 和 主题 构建,主题由 Read the Docs 提供。