![在 Ubuntu 上编译和使用 OpenFST 时如何处理“对 dlopen 未定义的引用”错误?](https://linux22.com/image/972911/%E5%9C%A8%20Ubuntu%20%E4%B8%8A%E7%BC%96%E8%AF%91%E5%92%8C%E4%BD%BF%E7%94%A8%20OpenFST%20%E6%97%B6%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E2%80%9C%E5%AF%B9%20dlopen%20%E6%9C%AA%E5%AE%9A%E4%B9%89%E7%9A%84%E5%BC%95%E7%94%A8%E2%80%9D%E9%94%99%E8%AF%AF%EF%BC%9F.png)
尝试编译并使用开放FST在 Ubuntu 13.10 上会导致链接错误,如“未定义对 dlopen 的引用”。如何修复此问题?在线搜索建议-ldl
在 gcc 命令行中包含此问题,但这还不够。
答案1
编译如下:
./configure LDFLAGS=-Wl,--no-as-needed
make
sudo make install
要编译a.cpp
使用该库的程序,请执行以下操作
g++ -I /usr/local/include a.cpp /usr/local/lib/libfst.so -Wl,--no-as-needed -ldl
-ldl
之后出现的很重要-Wl,--no-as-needed
。
程序的运行正如 OpenFST 提供的 README 所期望的那样,你只需要/usr/local/lib
在你的 中包含以下内容即可LD_LIBRARY_PATH
。例如,
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib" ./a.out