2014-09-04 41 views
0

我試圖編譯這個示例程序GMP庫6.0.0不會編譯在Mac OS小牛

#include <iostream> 
#include <gmpxx.h> 


int main(int argc, const char * argv[]) 
{ 

    mpz_class rho = 3; 
    std:cout << rho; 

    return 0; 
} 

,我得到這個錯誤:

Undefined symbols for architecture x86_64: 
    "___gmpz_clear", referenced from: 
     __gmp_expr<__mpz_struct [1], __mpz_struct [1]>::~__gmp_expr() in main-5858d5.o 
    "___gmpz_init_set_si", referenced from: 
     __gmp_expr<__mpz_struct [1], __mpz_struct [1]>::init_si(long) in main-5858d5.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

我手動編譯我的主要用這個命令:

clang++ -L /opt/local/lib -I /opt/local/include -lgmpxx main.cpp 

GMP已經通過MacPorts的安裝:

$port list gmp 
gmp       @6.0.0   devel/gmp 

編譯器的信息:

$clang++ --version 
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn) 
Target: x86_64-apple-darwin13.3.0 
Thread model: posix 

一些更多的信息:

ll /opt/local/lib/libgmp* 
/opt/local/lib/libgmp.10.dylib 
/opt/local/lib/libgmp.a 
/opt/local/lib/libgmp.dylib -> libgmp.10.dylib 
/opt/local/lib/libgmpxx.4.dylib 
/opt/local/lib/libgmpxx.a 
/opt/local/lib/libgmpxx.dylib -> libgmpxx.4.dylib 

和:

ll /opt/local/include/gmp* 
/opt/local/include/gmp.h 
/opt/local/include/gmpxx.h 
+1

將'-lgmpxx'放在編譯行中的'main.cpp'後面 – Petesh 2014-09-04 17:31:46

+0

@Petesh它不起作用:/ – 2014-09-04 17:39:19

+3

嘗試'-lgmpxx -lgmp'。 – 2014-09-04 19:28:49

回答

1

運行clang++ -L /opt/local/lib -I /opt/local/include -lgmpxx -lgmp main.cpp做的伎倆感謝@牛米。

+1

https://gmplib.org/manual/Headers-and-Libraries.html(閱讀您要使用的文檔通常是一個好主意) – 2014-09-04 21:24:00