2014-07-08 21 views
5

Bir macdayım ve gcc ve gmp'u homebrew aracılığıyla yükledim. Ben g++ test.cpp -lgmpxx -lgmp çalışırsanız o yüzden g++ test.cpp -lgmpxx -lgmp -I/usr/local/include/ denedimC++ gmp ve homebrew

test.cpp:9:19: fatal error: gmpxx.h: No such file or directory 
#include <gmpxx.h> 
       ^
compilation terminated. 

şikayet hepsinden

#include <iostream> 
#include <gmpxx.h> 
using namespace std; 
int 
main (void) 
{ 
mpz_class a, b, c; 

a = 1234; 
b = "-5678"; 
c = a+b; 
cout << "sum is " << c << "\n"; 
cout << "absolute value is " << abs(c) << "\n"; 

return 0; 
} 

İlk:

ben here gelen basit bir örnek denedim benim kurulumunu test etmek için

ld: library not found for -lgmpxx 
collect2: error: ld returned 1 exit status 

O halde'yi denedim

Undefined symbols for architecture x86_64: 
    "operator<<(std::basic_ostream<char, std::char_traits<char> >&, __mpz_struct const*)", referenced from: 
     std::basic_ostream<char, std::char_traits<char> >& operator<< <__mpz_struct [1], __mpz_struct [1]>(std::basic_ostream<char, std::char_traits<char> >&, __gmp_expr<__mpz_struct [1], __mpz_struct [1]> const&) in ccPugkZ3.o 
     std::basic_ostream<char, std::char_traits<char> >& operator<< <__mpz_struct [1], __gmp_unary_expr<__gmp_expr<__mpz_struct [1], __mpz_struct [1]>, __gmp_abs_function> >(std::basic_ostream<char, std::char_traits<char> >&, __gmp_expr<__mpz_struct [1], __gmp_unary_expr<__gmp_expr<__mpz_struct [1], __mpz_struct [1]>, __gmp_abs_function> > const&) in ccPugkZ3.o 
ld: symbol(s) not found for architecture x86_64 
collect2: error: ld returned 1 exit status 

komik şey cout ile satırları ve deneyin g++ test.cpp -lgmpxx -lgmp -I/usr/local/include/ -L/usr/local/lib/ && ./a.out hiçbir şikayet olmasıdır. Özellikle c = a+b; hattının yorumlanmasına gerek yoktu, bu yüzden bir şeyler oluyormuş gibi hissediyorum.

Neyi eksik? Örnek kodu derlemek için nasıl alabilirim?

DÜZENLEME:

Doğru hata mesajı anlama am mı @Will 'ın önerisi başına, ben g++ test.cpp -lgmpxx -lgmp -I/usr/local/include/ -L/usr/local/lib/ -m32

ld: warning: ld: warning: ignoring file /usr/local/lib//libgmpxx.dylib, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/lib//libgmpxx.dylibignoring file /usr/local/lib//libgmp.dylib, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/lib//libgmp.dylib 

Undefined symbols for architecture i386: 
    "operator<<(std::basic_ostream<char, std::char_traits<char> >&, __mpz_struct const*)", referenced from: 
     std::basic_ostream<char, std::char_traits<char> >& operator<< <__mpz_struct [1], __mpz_struct [1]>(std::basic_ostream<char, std::char_traits<char> >&, __gmp_expr<__mpz_struct [1], __mpz_struct [1]> const&) in ccrPv2wC.o 
     std::basic_ostream<char, std::char_traits<char> >& operator<< <__mpz_struct [1], __gmp_unary_expr<__gmp_expr<__mpz_struct [1], __mpz_struct [1]>, __gmp_abs_function> >(std::basic_ostream<char, std::char_traits<char> >&, __gmp_expr<__mpz_struct [1], __gmp_unary_expr<__gmp_expr<__mpz_struct [1], __mpz_struct [1]>, __gmp_abs_function> > const&) in ccrPv2wC.o 
    "___gmpz_abs", referenced from: 
     __gmp_abs_function::eval(__mpz_struct*, __mpz_struct const*) in ccrPv2wC.o 
    "___gmpz_add", referenced from: 
     __gmp_binary_plus::eval(__mpz_struct*, __mpz_struct const*, __mpz_struct const*) in ccrPv2wC.o 
    "___gmpz_clear", referenced from: 
     __gmp_expr<__mpz_struct [1], __mpz_struct [1]>::~__gmp_expr() in ccrPv2wC.o 
    "___gmpz_init", referenced from: 
     __gmp_expr<__mpz_struct [1], __mpz_struct [1]>::__gmp_expr() in ccrPv2wC.o 
     __gmp_expr<__mpz_struct [1], __mpz_struct [1]>::__gmp_expr<__gmp_unary_expr<__gmp_expr<__mpz_struct [1], __mpz_struct [1]>, __gmp_abs_function> >(__gmp_expr<__mpz_struct [1], __gmp_unary_expr<__gmp_expr<__mpz_struct [1], __mpz_struct [1]>, __gmp_abs_function> > const&) in ccrPv2wC.o 
    "___gmpz_set_si", referenced from: 
     __gmp_expr<__mpz_struct [1], __mpz_struct [1]>::assign_si(long) in ccrPv2wC.o 
    "___gmpz_set_str", referenced from: 
     __gmp_expr<__mpz_struct [1], __mpz_struct [1]>::operator=(char const*) in ccrPv2wC.o 
ld: symbol(s) not found for architecture i386 
collect2: error: ld returned 1 exit status 

denedim

olarak, kütüphaneler gerçekten 64- için inşa edildi görünüyor bit ve hatta mpz_class a, b, c bildirimi -m32 ile derlenemez.

+0

anahtarı 'yardımcı -m32' ekleyerek mu? Kendimi test etmek için elimde hiç yok, ama 32 bit libs kurmuş olabilirsiniz? – Will

+0

@Will Öneriniz için teşekkür ederiz, ancak maalesef bu sorun sorunu çözmüyor gibi görünüyor. Bir iletideki hata iletisini orijinal yayınma gönderdim. – math4tots

+0

bağlantı yolunu * önce * kütüphane adını koydu mu? 'g ++ -I/usr/local/include/-L/usr/local/lib/-lgmpxx -lgmp test.cpp' (hala telefondan tahmin ediliyor) – Will

cevap