【问题标题】:Problems linking static Intel IPP libraries on Linux with g++将 Linux 上的静态英特尔 IPP 库与 g++ 链接时出现问题
【发布时间】:2009-02-03 18:59:48
【问题描述】:

我一直在尝试将项目从 Xcode 迁移到 Linux(目前是 Ubuntu x86,但希望静态链接的可执行文件可以在 x86 CentOS 机器上运行?我希望如此?)。我已经编译了整个项目,但它在链接阶段失败了——它为 IPP 定义的所有函数提供了未定义的引用。这可能是一件非常小而愚蠢的事情,但我已经为此绞尽脑汁好几天了,但我无法让它发挥作用。

这是编译语句(我也有一个生成相同错误的生成文件):

g++ -静态 /opt/intel/ipp/6.0.1.071/ia32/lib/libippiemerged.a /opt/intel/ipp/6.0.1.071/ia32/lib/libippimerged.a /opt/intel/ipp/6.0.1.071/ia32/lib/libippsemerged.a /opt/intel/ipp/6.0.1.071/ia32/lib/libippsmerged.a /opt/intel/ipp/6.0.1.071/ia32/lib/libippcore.a -pthread -I /opt/intel/ipp/6.0.1.071/ia32/include -I 工具/包括 -o main main.cpp pick_peak.cpp get_starting_segments.cpp get_segment_timing_differences.cpp recast_and_normalize_wave_file.cpp 节奏分数.cpp 音高分数.cpp pitch_curve.cpp 工具/源/LocalBuffer.cpp tools/source/wave.cpp distance.cpp

...这是一长串链接器错误的开始:

./main.o: In function `main':
main.cpp:(.text+0x13f): undefined reference to `ippsMalloc_16s'
main.cpp:(.text+0x166): undefined reference to `ippsMalloc_32f'
main.cpp:(.text+0x213): undefined reference to `ippsMalloc_16s'

有什么想法吗? FWIW,这些是我的 Xcode 项目中的 IPP 依赖项,可以毫无问题地构建、链接和运行:“-lippiemerged”, “-lippimerged”, “-lippsemerged”, “-lippsmerged”, “-lippcore”,

谢谢!

【问题讨论】:

    标签: c++ linux linker g++ intel-ipp


    【解决方案1】:

    您的链接问题可能是由于您的链接行完全向后: 存档库应该在命令行上跟随源文件和目标文件,而不是在它们之前。要了解订单为何重要,请阅读this

    另外请注意,在 Linux 上,静态链接的可执行文件的可移植性明显低于动态链接的可执行文件。一般来说,如果您在较旧的 Linux 系统上动态链接系统库,它将适用于所有较新的系统(我使用古老的 RedHat 6.2,我还没有看到我的可执行文件无法在其上运行的系统)。对于完全静态的可执行文件,情况并非如此。当移动到具有与它们所链接的 libc 不同的系统时,它们可能会以各种“有趣”的方式崩溃。

    【讨论】:

      【解决方案2】:

      我在将代码与 ipp v 6 链接时遇到问题;使用编译器的 v11 版本(包括对 ipp 的更新)神秘地修复了它们。当然,那是在 Windows 平台上,但我得到了 8u 版本的函数来编译,而没有 32f 版本,尽管这两个版本在文档中都被列为有效。

      【讨论】:

      • 有趣...我根本没有使用过英特尔编译器。我会试一试。谢谢!
      • @bennettk - 英特尔编译器解决了您的问题吗?
      • 现在我想知道投反对票的原因;在我向他们指出问题后,他们在以后的版本中纠正了缺少这些库的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多