在 Ubuntu 上编译和使用 OpenFST 时如何处理“对 dlopen 的未定义引用”错误?

Pra*_*eek 3 dynamic-linking

尝试在 Ubuntu 13.10 上编译和使用OpenFST会导致链接错误,例如“对 dlopen 的未定义引用”。如何解决这个问题?在线搜索建议包括-ldl在 gcc 命令行中,但这还不够。

Pra*_*eek 9

编译如下:

./configure LDFLAGS=-Wl,--no-as-needed
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

要编译a.cpp使用该库的哪个,请执行

g++ -I /usr/local/include a.cpp /usr/local/lib/libfst.so -Wl,--no-as-needed -ldl
Run Code Online (Sandbox Code Playgroud)

重要的是-ldl出现在 之后-Wl,--no-as-needed

运行你的程序就像你从 OpenFST 提供的自述文件中期望的那样工作,你只需要/usr/local/lib在你的LD_LIBRARY_PATH. 例如,

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib" ./a.out
Run Code Online (Sandbox Code Playgroud)