Linker 如何在Linux上使用共享库分发应用程序

Linker 如何在Linux上使用共享库分发应用程序,linker,shared-libraries,Linker,Shared Libraries,我的应用程序使用库:boost,ffmpeg(avcodec,avformat,…)。我想打包我的应用程序在Ubuntu 14或更高版本上运行。我不想使用静态构建 我检查了一些安装Ubuntu的电脑。以下是结果: Ubuntu 14.04: ls -l libavcodec* libavcodec.a libavcodec.so -> libavcodec.so.54.35.1 libavcodec.so.54.35.1 ls -l libboost_thread* libboost_t

我的应用程序使用库:boost,ffmpeg(avcodec,avformat,…)。我想打包我的应用程序在Ubuntu 14或更高版本上运行。我不想使用静态构建

我检查了一些安装Ubuntu的电脑。以下是结果:
Ubuntu 14.04:

ls -l libavcodec*
libavcodec.a
libavcodec.so -> libavcodec.so.54.35.1
libavcodec.so.54.35.1

ls -l libboost_thread*
libboost_thread.a
libboost_thread.so -> libboost_thread.so.1.54.0
libboost_thread.so.1.54.0
Ubuntu 16.04:

ls -l libavcodec*
libavcodec.a -> libavcodec-ffmpeg.a
libavcodec-ffmpeg.a
libavcodec-ffmpeg.so -> libavcodec-ffmpeg.so.56.60.100
libavcodec-ffmpeg.so.56 -> libavcodec-ffmpeg.so.56.60.100
libavcodec-ffmpeg.so.56.60.100
libavcodec.so -> libavcodec-ffmpeg.so

ls -l libboost_thread*
libboost_thread.a
libboost_thread.so -> libboost_thread.so.1.58.0
libboost_thread.so.1.58.0
我的应用程序

objdump -p  ControlStation | grep NEEDED
NEEDED               libavcodec-ffmpeg.so.56
NEEDED               libavformat-ffmpeg.so.56
NEEDED               libavutil-ffmpeg.so.54
NEEDED               libswscale-ffmpeg.so.3
NEEDED               libboost_system.so.1.58.0
NEEDED               libboost_thread.so.1.58.0
....
我在Ubuntu 16上编译,所以我的应用程序使用文件libavcodec-ffmpeg.so.56和libboost_-thread.so.1.58.0。因此,它不能在其他计算机上运行

通常,共享库应该是

libName.so ---> libName.so.MAJOR
libName.so.MAJOR --> real library file
但是ffmpeg有很多版本,boost库没有符号文件libboost_thread.so.1

有人能帮我解决这个问题吗?谢谢大家!