2011-12-20 34 views
1

Folk,Linux - 如何修复可执行映像中的共享库链接?

我创建了一个基于Linux的可执行文件。我想设置它,使用户可以简单地下载和使用。只要用户使用Ubuntu 11.xx的x86版本,他们应该只能运行该应用程序。

我想弄清楚的问题是如何处理共享库。例如,我的可执行文件可能需要libxxx.so.23,但用户可能有libxxx.so.22。对于我正在使用的功能,该应用程序可以使用任何版本的软件。

看着类似的帖子,建议是在两个版本之间创建一个新的符号链接。

问题是我不能指望用户坐下来为所有的依赖关系创建符号链接。

必须有更好的方法来创建一个准备好大规模分发的简单可执行文件。显然,通过apt-get下载的软件包似乎会自动处理这个问题。

我感谢您的帮助。

问候, 彼得

+0

NB即制造不同版本的共享库之间的符号链接将不能可靠地工作。 – 2011-12-20 19:16:11

回答

0

我会建议为您的应用程序创建静态构建。 当您创建构建时,与libxxx.a(静态库)进行链接。

Or you can create the .deb (for ubuntu and debian) package. 
It will resolve the library dependencies. 

通过 SIVAķ

2

静态编译软件包,因此它不依赖于任何特定的.so文件(S)

包在APT和类似的基于二进制包管理器通常依赖于准确版本的库,所以,例如,nmap-2.2.3取决于libpcap-1.1.2,所以它总是链接到相同的.so