ubuntu18.04虚拟机在使用tts语音合成包编译时出现/usr/bin/ld: 找不到 -lmsc
在我移植robot_voice语音合成包编译时出现/usr/bin/ld: 找不到 -lmsc的错误
参考文章:https://blog.csdn.net/weixin_39059031/article/details/84135125
错误如图:

原因是缺少了libmsc.so,科大讯飞语音 SDK 的相关库文件
存在我的/home/mao/xqq/src/robot_voice/libs路径下
解决方法:
1.将libmsc.so复制到/usr/local/lib路径下
sudo cp /path/to/source/libmsc.so /usr/local/bin/
#我的环境下使用的指令为
sudo cp /home/mao/xqq/src/robot_voice/libs/x64/libmsc.so /usr/local/bin/
#用绝对路径!否则容易报错!之后更新动态链接器的缓存,否则系统可能无法识别新添加的库文件。
sudo ldconfig
2.重新编译,运行
编译没有问题了,但是在rosrun执行时又出现问题!!
/home/mao/xqq/devel/lib/robot_voice/tts_subscribe: error while loading shared libraries: libmsc.so: cannot open shared object file: No such file or directory
文件在执行时无法打开libmsc.so
这是因为程序的链接路径不正确
如果使用 CMake 构建项目,确保 CMakeLists.txt 文件中正确指定了 libmsc.so 库的链接。

我打开了我的 CMakeLists.txt发现其中缺少了
find_library(MSC_LIBRARY msc PATHS /usr/local/lib)
加上后重新编译,可以。
再次执行rosrun robot_voice tts_subscribe 成功!!
注:复制的时候x86与x64都试一下,我最初复制了x86,报错
/home/mao/xqq/devel/lib/robot_voice/tts_subscribe: error while loading shared libraries: libmsc.so: wrong ELF class: ELFCLASS32
出现“wrong ELF class: ELFCLASS32”错误,表明你的程序是64位的,而链接的 libmsc.so 库是32位的。这意味着程序和库的架构不匹配。则应该cp x64!
至此,解决!
耗费我一天的时间,各种找资料,最终在我和ai的完美配合下解决问题。
一切源自于对cmake的不熟悉,今后加强。
希望大家,天天开心,一起进步!
更多推荐

所有评论(0)