2014-04-02 2 views
5

Скачано gmp-6.0.0a.tar.xz файл и распаковать (tar) в каталоге usr/local. Как говорили люди, я набрал ./configure, make, make check и sudo make install в каталоге gmp-6.0.0. Установка показалась прекрасной. Но когда я пытался проверить, как этотgmp.h файл не найден error в Xcode, mac

#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 другим флагам Linker, но не работает.

Я не знаю, как бороться с этой проблемой. Может ли кто-нибудь помочь?


Thank you Dietrich Epp. Теперь у меня нет ошибки в файле gmp.h, но У меня есть файл gmpxx.h не найден. Не знаю почему ..

Любое предложение ???

ответ

5

C++ поддержка не включена по умолчанию при настройке 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 

должен быть достаточно.

Это может быть необходимо предварять /usr/local/lib переменной DYLD_LIBRARY_PATH, если другая система библиотеки GMP установки используются первыми, если вы не жёстко библиотекой с линкером -rpath вариантом. Но беспокоиться о том, когда и когда возникает проблема, - это что-то беспокоиться.

+0

это работает !! Большое спасибо. Два ответа очень благодарны. Я не знаю, какой из них я должен принять. – Q123

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 к «дополнительным путям поиска заголовков» в настройках проекта (или некоторых подобных настройках).

+0

Благодарим вас за ответ.Пока это работает. Однако, поскольку я хочу добавить '#include ', он также имеет ту же проблему, что файл 'gmpxx.h' не найден. – Q123

Смежные вопросы