2016-03-06 94 views
1

好的。所以我已经有了使用GMP库的简单应用程序。这里的代码:缺少共享库(g ++编译)

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

using std::cout; 
using std::endl; 


int main(int argc, char** argv) 
{ 
    int number=100; 
    mpz_t a; mpz_init(a); 
    mpz_t b; mpz_init(b); 
    mpz_set_ui(b, 1); 
    cout<<a<<endl; 
    for (; number>0; number--) 
    { 
     cout<<b<<endl; 
     mpz_add(b,b,a); 
     mpz_sub(a,b,a); 
    } 
    mpz_clear(a); 
    mpz_clear(b); 
} 

我去为g++ main.cpp -o app -lgmpxx -lgmp。编译工作,我的意思是没有错误。然后我去./app这里是显示的内容:

enter image description here

好,但是为什么呢?我/usr/local/lib看起来是这样的:

enter image description here

难道我做错了什么?

回答

1

试试这个:

g++ -L/usr/local/lib main.cpp -o app -lgmpxx -lgmp 

您还可以添加(如sudo的)路径,该库到/etc/ld.so.conf中,然后运行(也可作为须藤)LDCONFIG,重建缓存。要查看您库添加正确使用此命令:

ldconfig -p | grep libgmp 
1

共享库访问或动态链接是通过PATH环境变量控制。所以从外壳做echo $LD_LIBRARY_PATH的价值将需要包括/usr/local/lib

+0

如果'echo $ LD_LIBRARY_PATH'给我什么都没有?我能做什么? – Frynio

+0

假定bash'export LD_LIBRARY_PATH =/usr/local/lib'应该这样做。你可能想把它保存在某个脚本中... –

+0

但是我应该在哪里放? – Frynio