我在gmp-6.0.0a.tar.xz
目录中下载了usr/local
文件并解压缩(tar)。
正如人们所说,我在./configure
目录中输入了make
,make check
,sudo make install
和gmp-6.0.0
。
安装似乎很好。但当我试图像这样测试时
#include <stdio.h>
#include <gmp.h>
#include <gmpxx.h>
int main(int argc, const char * argv[])
{
// insert code here...
printf("Hello, World!\n");
return 0;
}
它找不到gmp.h
文件的错误。
我将-lgmp
添加到其他链接器标志但不起作用。
我不知道如何处理这类问题。有人可以帮忙吗?
谢谢Dietrich Epp。 现在我没有找到gmp.h文件的错误但是 我找不到gmpxx.h文件。 我不知道为什么..
任何建议???
答案 0 :(得分:5)
首先,你不应该在/usr/local
中解压它。只需将其解压缩到您主目录中的某个位置(这没关系),然后./configure; make; make check; sudo make install
。
您的问题可能是因为编译器没有搜索/usr/local/include
。
检查/usr/local/include/gmp.h
是否存在。如果它不存在,GMP安装不正确(或安装在不同的位置)。
将-I/usr/local/include
添加到编译器标志中。在Xcode中,这是通过将/usr/local/include
添加到&#34;其他标题搜索路径&#34;来完成的。在项目设置中(或类似的设置)。
答案 1 :(得分:5)
配置GMP时,默认情况下./configure --prefix=/usr/local --enable-cxx
- 这也将安装gmpxx.h
标头以及libgmpxx.dylib
和/或libgmpxx.a
库
不确定最新的GMP是否为C ++编译器选择了铿锵声。您可以手动设置环境变量,例如CC=clang
(默认为C99)和:CXX=clang++ -std=c++11 -stdlib=libc++
(C ++ 11方言 - 也将C ++ 11选项传递给链接器)。同样,这可能是不必要的。
您的测试,因为它包含C ++,必须构建为C ++应用程序。此外,libgmpxx.dylib
本身与libgmp.dylib
相关联,因此对于简单的C ++测试程序:
$CXX -I/usr/local/include gmptest.cc -o gmptest -L/usr/local/lib -lgmpxx
应该足够了。
如果首先使用其他系统GMP库安装,则可能需要将/usr/local/lib
添加到DYLD_LIBRARY_PATH
变量,除非您使用链接器-rpath
选项对库进行硬编码。但是,如果问题出现,那就要担心了。