загрузка библиотеки re2

Я использую следующий код для тестирования библиотеки RE2 Google

int main()
{
  int r = RE2::FullMatch("hello", "h.*o");
  cout <<" match = " << r << endl;
  return 0;
}

Я использую следующую команду -

g++ -lre2 -o retest retest.cc

Он компилируется нормально, но когда я пытаюсь запустить повторное тестирование с помощью ./retest, он выдает следующую ошибку:

error while loading shared libraries: libre2.so.0: cannot open shared object file: No such file or directory

Я проверил, существует ли библиотека libre2.so.0 в каталогах user / local / lib и re2 / obj / so. Так почему возникает эта ошибка? Я забыл добавить некоторые детали?


person ocwirk    schedule 30.11.2011    source источник
comment
Может ли это быть решением? edn.embarcadero.com/article/32861. Просто установите LD_LIBRARY_PATH так, чтобы он указывал на каталог lib, в котором находится libre.so.0.   -  person Lucian    schedule 30.11.2011
comment
где находится файл libre2.so.0? это в вашем LD_LIBRARY_PATH и / или пути из /etc/ld.so.conf? вы запускали ldconfig после его установки?   -  person PlasmaHH    schedule 30.11.2011


Ответы (2)


Запуск sudo ldconfig сделал свое дело.

person ocwirk    schedule 30.11.2011

Классическая ловушка:

g++ -o retest retest.cc -lre2 

Библиотеки должны быть последними

Редактировать, честно говоря, меня удивляет отсутствие ошибок ссылок. Я сохраню его на случай, если вы упустили какую-то информацию в вопросе

person sehe    schedule 30.11.2011
comment
Возможно, пора убедиться, что библиотека находится на пути ld, и перезапустить ldconfig. - person Michael Krelin - hacker; 30.11.2011
comment
@ MichaelKrelin-hacker: +1 возможно. Хотя в большинстве систем usr/local/lib находится в ldconfig, а libre2 упакован - person sehe; 30.11.2011
comment
Я думаю, что да, проверка пропуска пути, скорее всего, безопасна и может помочь в случае, если библиотека была установлена ​​из исходного кода ldconfig. - person Michael Krelin - hacker; 30.11.2011