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'

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

$ scl enable devtoolset-11 'gcc objfile.o -lsomelib'

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.