【发布时间】:2026-01-20 07:20:08
【问题描述】:
场景 1: 我想将一个新库(libA)链接到我的程序中,libA 是使用带有 -std=gnu99 标志的 gcc 构建的,而我的程序的当前库是在没有该选项的情况下构建的(假设 gcc 默认使用 -std=gnu89 )。
场景 2: libB 是使用一些预处理器标志构建的,如“-D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED”以启用 XPG4 功能,例如msg_control 结构 msghdr 的成员。虽然 libC 不是在没有这些预处理器标志的情况下构建的,但它与 libB 相关联。
链接使用不同预处理器标志或 C 标准构建的库是错误的吗? 我关心的主要是结构定义不匹配。
谢谢。
【问题讨论】:
-
我为不同的优化做了很多,其中一个关键例程比程序的其余部分优化得更精细。
-
谢谢米哈伊尔,是的,我知道它应该在不同优化标志的情况下工作。我已经更新了我的问题,我担心的是结构定义不匹配。
标签: c gcc linker shared-libraries