2.4. Red Hat Developer Toolset 中的 GCC 细节


库的静态链接

某些最新库功能会静态链接到使用 Red Hat Developer Toolset 构建的应用程序中,以支持对多个版本的 Red Hat Enterprise Linux 执行。这会造成额外的微小的安全风险,因为标准 Red Hat Enterprise Linux 勘误不会改变这个代码。如果开发人员由于此类风险而重建其应用程序的需求,红帽将使用安全勘误进行沟通。

重要

由于这种额外的安全风险,强烈建议开发人员不以静态方式将其整个应用程序链接到同一原因。

在链接对象文件后指定库

在 Red Hat Developer Toolset 中,库使用链路器脚本链接,这些脚本可能会通过静态归档指定某些符号。这需要确保与多个 Red Hat Enterprise Linux 版本兼容。但是,linker 脚本使用对应共享对象文件的名称。因此,链接者使用不同于预期的符号处理规则,当选项在指定对象文件前指定库时,不会识别对象文件所需的符号:

$ scl enable devtoolset-11 'gcc -lsomelib objfile.o'
Copy to Clipboard Toggle word wrap

以这种方式使用 Red Hat Developer Toolset 的库会导致链接器错误消息 undefined 引用到符号。要防止这个问题,请按照标准链接实践操作,并在指定对象文件选项后指定添加库的选项:

$ scl enable devtoolset-11 'gcc objfile.o -lsomelib'
Copy to Clipboard Toggle word wrap

请注意,在使用 GCC 基本 Red Hat Enterprise Linux 版本时,这个建议也会适用。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat