2013-01-05 117 views
0

我已經安裝了GCC 4.7.2和5.1.0 GMP和我在寫main.cpp這個簡單的代碼查找在~/Desktop鏈接外部庫GCC OS X

#include <iostream> 
#include <gmp.h> 

using namespace std; 

int main() 
{ 
    mpz_t a; 

    mpz_init(a); 

    mpz_set_ui(a, 42); 

    cout << "Hello, world!" << endl; 
} 

我編譯

$ g++ main.cpp -o exe 

但我收到此錯誤信息:

Undefined symbols for architecture x86_64: 
    "___gmpz_init", referenced from: 
     _main in ccC0FXun.o 
    "___gmpz_set_ui", referenced from: 
     _main in ccC0FXun.o 
ld: symbol(s) not found for architecture x86_64 
collect2: error: ld returned 1 exit status 

我認爲這是因爲它沒有找到GMP圖書館,對吧​​?

那麼如何鏈接GCC中的外部庫如GMP

回答

2

你的節目對我的作品在這裏很好用:

g++ main.cpp -o exe -lgmp 

檢查GCC documentation-l標誌的說明。

+0

好吧,它與-lgmp標誌一起使用。但是,例如,爲什麼我不必寫-liostream? – fpiro07

+1

由於'iostream'不是一個庫,它是一個頭文件,並且當使用'g ++'時,相應的庫(通常是'libstdC++')隱含地包含在鏈接中。 –

+0

例如,如果我還必須使用已安裝的'acme.a'library,則必須編寫:'$ g ++ main.cpp -o exe -lgmp -lacme',對不對? – fpiro07