【发布时间】: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 提出的解决方案之外,我不确定还会发生什么。但是感谢您的帮助。