是否可以像Windows中的DLL一样以可移植的方式使用共享对象文件?
我想知道是否有一种方法可以为Linux提供一个可以使用的编译库.以同样的方式,您可以在Windows中编译DLL,它可以在任何其他Windows上使用(好吧,不是任何其他Windows,但在大多数情况下它可以).
这可能在Linux中吗?
编辑:
我刚刚醒来并阅读了答案.有一些非常好的.
我不是想隐藏源代码.我只是想提供一个已经编译并且可以使用的库,因此没有编译经验的用户不需要自己动手.
因此,我们的想法是提供一个可以在尽可能多的不同Linux上运行的.so文件.
该库使用STL和Boost库以C语言编写.
>正在使用某些发行版上没有的扩展名
>在安装脚本中引入bash-isms
>使用所有最新内核中不可用的系统调用
>取决于非标准库(它会告诉你哪些发行版缺少它们)
>很多,很多其他很好的检查
您可以获得more information here以及下载该工具.它易于运行..只需解压缩它,运行perl脚本并将浏览器指向localhost ..其余的是浏览器驱动的.
使用该工具,您可以轻松地获得您的库/应用程序LSB认证(两个版本),并使发行版打包机的工作更容易.
除此之外,只需使用类似libtool(或类似)的东西来确保您的库安装正确,为不想链接DSO的人提供静态对象(您的库需要时间才能出现在大多数发行版中),所以写一个便携式程序,我不能指望它存在)并很好地评论你的公共接口.
对于图书馆,我发现Doxygen效果最好.文档非常重要,它肯定会影响我选择的库以用于任何给定的任务.
实际上,再次检查应用程序检查程序,它将为您提供可移植性问题报告,这将需要一年的时间让图书馆在野外出现以获得其他方式.
最后,尝试使您的库容易“放入树中”,因此我不必静态链接它.正如我所说,它可能需要几年才能在大多数发行版中变得普遍.我更容易抓住你的代码,将它放在src / lib中并使用它,直到你的库是常见的.请,请给我单元测试,TAP(测试任何协议)是一个很好的,可移植的方式来做到这一点.如果我破解你的图书馆,我需要(快速)知道我是否打破了它,特别是在树或原地修改它时(如果存在DSO).