Como faço para lidar com erros de “referência indefinida para dlopen” ao compilar e usar o OpenFST no Ubuntu?

1

Tentar compilar e usar OpenFST no Ubuntu 13.10 leva a erros de link como "referências indefinidas para dlopen". Como alguém conserta isso? A pesquisa online sugere incluir -ldl na linha de comando do gcc, mas isso não é suficiente.

    
por Prateek 24.04.2014 / 15:02

2 respostas

7

Compile da seguinte forma:

./configure LDFLAGS=-Wl,--no-as-needed
make
sudo make install

Para compilar seu a.cpp , que usa a biblioteca, faça

g++ -I /usr/local/include a.cpp /usr/local/lib/libfst.so -Wl,--no-as-needed -ldl

É importante que -ldl apareça depois de -Wl,--no-as-needed .

A execução do seu programa funciona como esperado no README fornecido pelo OpenFST, você só precisa ter /usr/local/lib no seu LD_LIBRARY_PATH . Por exemplo,

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib" ./a.out
    
por Prateek 24.04.2014 / 15:02
3

Como pode ser visto no Catálogo de regras incorporadas :

% bl0ck_qu0te%

e Variáveis usadas por regras implícitas :

% bl0ck_qu0te%

Portanto, neste caso, -ldl deve ser definido ou adicionado ao LDLIBS, não ao LDFLAGS.

    
por Sierra 05.06.2016 / 17:33