【问题标题】:CGAL Compile / Linker ErrorCGAL 编译/链接器错误
【发布时间】:2018-06-13 04:08:14
【问题描述】:

我正在尝试在 Nvidia 的 Nsight Eclipse 工作室 (Eclipse CDT) 中设置 CGAL。我不打算将它与 CUDA 一起使用,但是我需要将它用于我正在从事的项目的另一部分。

我得到的错误是:

/home/me/work/x64_linux/cgal/include/CGAL/GMP/Gmpq_type.h:62: 
undefined reference to `__gmpq_init'

这之后是关于 gmpq 的其他几个相同的错误。我认为这是一个链接问题,但据我所知,我不确定我哪里出错了。我的其他依赖项链接很好。我通过 apt-get 安装了 CGAL,并按照手册中给出的设置说明进行操作。也许我在那里的某个地方出错了,但长话短说,我很不知道如何让它工作!感谢任何帮助/提示!

编辑:这是解决方案,适用于将来可能偶然发现此问题的任何人。

由于某种原因,尽管我的输入是正确的,IDE 还是错误地引用了库。我只是打开了一个新项目并迁移了我的文件。添加库遵循 Eclipse 中的标准过程:转到 Project Properties -> Paths and Symbols。将库所在目录的路径添加到库路径中,并将库名称添加到库中。

【问题讨论】:

  • 简短回答:-lgmp。更长的答案:在此站点上搜索“未定义的参考”。此外,CGAL 建议使用 cmake,它会为您处理这个问题。
  • @Marc 所以我能够让我的程序链接并使用自定义 cmake 设置进行编译。我注意到将 -lgmp 传递给目标链接器不起作用,我不得不将整个路径添加到文件中。不知道为什么。我尝试将整个路径添加到 IDE 中的库,但它返回错误 /usr/bin/ld: cannot find -l/usr/lib/x86_64-linux-gnu/libgmp.so 如果我能在 IDE 中让它工作会很好,但它似乎找不到文件,即使给出整个路径
  • -l/usr/lib/x86_64-linux-gnu/libgmp.so:这不是它的工作原理。 “没有工作”:如此精确的错误信息......
  • @Marc 是的,我也可以阅读,别担心。问题是为什么链接器找不到它 - 它存在,它在目录中,我试图将它放在其他目录中,看看它是否修复它/是权限问题。除了我尝试过的明显解决方案以及谷歌和 SO 提出的解决方案之外,我不确定还会发生什么。但是感谢您的帮助。

标签: c++ eclipse cgal nsight


【解决方案1】:
  1. 确保在编译代码时,应将 -l 选项传递给编译器以链接到 CGAL
  2. 如果您正在-l 选项传递给编译器,请确保可以从路径中的文件夹访问 CGAL 库,或者将完整路径传递给 CGAL 库.

没有看到您的构建设置,我无话可说。

【讨论】:

  • Noob 问题:有什么方法可以很好地将我的项目属性下的构建设置导出到 stackoverflow?如果没有,您有什么特别想检查的吗?我已经尝试了完整的路径;不能在 IDE 中使用,但可以使用自定义 cmake。
  • @ak47777 我现在在工作,但我回家后会下载 eclipse cdt 并指导您如何链接库
  • 不用了,我前段时间就修好了!不过感谢您的帮助。
【解决方案2】:

这里是解决方案,适用于将来可能偶然发现此问题的任何人。

由于某种原因,尽管我的输入是正确的,IDE 还是错误地引用了库。我只是打开了一个新项目并迁移了我的文件。添加库遵循 Eclipse 中的标准过程:转到 Project Properties -> Paths and Symbols。将库所在目录的路径添加到库路径中,并将库名称添加到库中。如果您需要澄清,请询问。

【讨论】:

    猜你喜欢
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    相关资源
    最近更新 更多