在Xcode,mac中找不到gmp.h文件错误

Q12*_*123 5 c c++ macos xcode gmp

gmp-6.0.0a.tar.xzusr/local目录中下载了文件并解压缩(tar).随着人们说,我输入./configure,make,make checksudo make installgmp-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;
}
Run Code Online (Sandbox Code Playgroud)

它有错误,gmp.h找不到文件.我添加-lgmp到Other Linker Flags但不起作用.

我不知道如何处理这类问题.有人可以帮忙吗?


谢谢Dietrich Epp.现在我没有找到gmp.h文件的错误,但是我找不到gmpxx.h文件.我不知道为什么..

有什么建议吗?

Die*_*Epp 5

首先,你不应该解读它/usr/local.只需将它解压缩到您主目录中的某个位置(无所谓)./configure; make; make check; sudo make install.

您的问题可能是由编译器不搜索引起的/usr/local/include.

  1. 检查是否/usr/local/include/gmp.h存在.如果它不存在,GMP安装不正确(或安装在不同的位置).

  2. 添加-I/usr/local/include到编译器标志.在Xcode中,这是通过/usr/local/include在项目设置中添加"附加标题搜索路径"(或某些类似的设置)来完成的.


Bre*_*ale 5

配置GMP时,默认情况下启用C++支持.解压缩包,并配置:./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
Run Code Online (Sandbox Code Playgroud)

应该足够了.

如果首先使用其他系统GMP库安装,则可能需要预先添加/usr/local/libDYLD_LIBRARY_PATH变量,除非使用链接器-rpath选项对库进行硬编码.但是,如果问题出现,那就要担心了.