2014-04-02 19 views
5

Pobrałem plik gmp-6.0.0a.tar.xz i rozpakować (tar) w katalogu usr/local. Tak jak mówiono, wpisałem: ./configure, make, make check i sudo make install w katalogu gmp-6.0.0. Instalacja wyglądała dobrze. Ale kiedy próbował przetestować jak togmp.h plik nie znaleziono błąd w 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; 
} 

to błąd, że nie znaleziono gmp.h plików. Dodałem -lgmp do innych flag linkerów, ale nie działa.

Nie wiem, jak sobie z tym poradzić. Czy ktoś mógłby pomóc?


Dziękuję Dietrich Epp. Teraz nie mam błędu nie znalezionego pliku gmp.h, ale Mam plik gmpxx.h nie został znaleziony. Nie wiem dlaczego ..

Jakieś sugestie ???

Odpowiedz

5

wsparcie C++ jest nie domyślnie włączone podczas konfigurowania GMP. Rozpakuj pakiet i skonfigurować z: ./configure --prefix=/usr/local --enable-cxx - będzie to również zainstalować nagłówek gmpxx.h i libgmpxx.dylib i/lub libgmpxx.a biblioteki

Nie wiem, czy najnowsza GMP podnosi szczęk dla C++. Można ręcznie ustawić zmienne środowiskowe, np. CC=clang (domyślnie C99) i: CXX=clang++ -std=c++11 -stdlib=libc++ (dialekt C++ 11 - również przekazuje opcje C++ 11 do linkera). Ponownie, może to być niepotrzebne.

Twój test, ponieważ zawiera C++, musi być zbudowany jako aplikacja C++. Również libgmpxx.dylib sama jest związana libgmp.dylib, więc dla prostego programu testowego C++:

$CXX -I/usr/local/include gmptest.cc -o gmptest -L/usr/local/lib -lgmpxx 

powinno wystarczyć.

Może być konieczne wstawienie /usr/local/lib do zmiennej DYLD_LIBRARY_PATH, jeśli inne instalacje biblioteki GMP systemu są używane najpierw, chyba że utworzysz bibliotekę za pomocą opcji linkera -rpath. Ale o to trzeba się martwić, jeśli i kiedy pojawi się problem.

+0

to działa! Dziękuję Ci bardzo. Dwie odpowiedzi są bardzo wdzięczne. Nie wiem, który powinienem zaakceptować. – Q123

5

Po pierwsze nie powinieneś go rozpakowywać w /usr/local. Po prostu rozpakuj to gdzieś w twoim katalogu domowym (to nie ma znaczenia), następnie ./configure; make; make check; sudo make install.

Twój problem może być spowodowany przez kompilator nie szukający /usr/local/include.

  1. Sprawdź, czy istnieje /usr/local/include/gmp.h. Jeśli nie istnieje, GMP jest zainstalowany niepoprawnie (lub zainstalowany w innym miejscu).

  2. Dodaj -I/usr/local/include do swoich flag kompilatora. W Xcode odbywa się to poprzez dodanie /usr/local/include do "dodatkowych ścieżek wyszukiwania nagłówków" w ustawieniach projektu (lub niektórych takich ustawieniach).

+0

Dziękuję za odpowiedź.Do tej pory to działa. Jednak, ponieważ chcę dodać '#include ' ma to ten sam problem, że nie znaleziono pliku 'gmpxx.h'. – Q123

Powiązane problemy