背景 当前工作中,需要交叉编译某个开源项目(假设名称为 foo),该项目生成物的默认名称为 libfoo.so.2.0.0-alpha,而在集成 libfoo.so 时,以下链接选项无效 -lfoo-lfoo.so.2.0.0-alpha 解决方案 经查询,Linux动态库有 realname, soname, linkname,用于做版本控制。三者区别可参考: Linux中共享库(so)的几个名称及相关用法Linux环境中动态库文件(.so文件)的realname,soname和linknamesoname 机制 在编译时设置 soname:-Wl,-soname,libfoo.2.0.0-alpha.so