2016-03-06 3 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, а затем запустить (также, как Sudo) LDCONFIG, перестраивать кэш. Для того, чтобы увидеть, если ваша библиотека добавить правильно использовать эту команду:

ldconfig -p | grep libgmp 
1

Общий доступ к библиотеке или динамическое связывание контролируется с помощью переменной окружения LD_LIBRARY_PATH. Итак, из оболочки do echo $LD_LIBRARY_PATH значение должно содержать значение /usr/local/lib

+0

А если 'echo $ LD_LIBRARY_PATH' ничего не дает? Что я могу сделать? – Frynio

+0

Предполагая, что bash 'export LD_LIBRARY_PATH =/usr/local/lib' должен это сделать. Вы можете захотеть сохранить это в скрипте где-нибудь ... –

+0

Но где я его положу? – Frynio

Смежные вопросы