问题
当遇到undefined reference to `__lws_close_free_wsi_final'这个报错时。
思路
1.该函数找不到定义,首先看看动态库里是否定义了该函数,命令:
nm libwebsockets.so.19 | grep __lws_close_free_wsi_final
该函数在库里是存在定义的。
2.该动态库是否加载到编译路径下,查询动态库的所在路径,该路径添加到环境变量里。
vi ~/.bash_profile
source ~/.bash_profile
重新编译代码,如果还是报错,可能是库太多了,用到别的库了。
3.查询该libwebsockets.so相关库的所在路径。
find / -name libwebsockets.so*
4.查询这个库的详细信息。
ll /usr/lib64/libwebsockets.so
ll /usr/lib64/libwebsockets.so.16
5.查询libwebsockets.so.16动态库是否定义里该函数__lws_close_free_wsi_final。
nm /usr/lib64/libwebsockets.so.16 | grep __lws_close_free_wsi_final
6.这个动态库没有定义该函数,这个路径在环境变量下,libwebsocket只有本程序用到了,所以将冲突的库删掉。
rm /usr/lib64/libwebsockets.so
7.再次编译程序,程序即可正常编译。