c – 便携式共享对象?

是否可以像Windows中的DLL一样以可移植的方式使用共享对象文件

我想知道是否有一种方法可以为Linux提供一个可以使用的编译库.以同样的方式,您可以在Windows中编译DLL,它可以在任何其他Windows上使用(好吧,不是任何其他Windows,但在大多数情况下它可以).

这可能在Linux中吗?

编辑:
我刚刚醒来并阅读了答案.有一些非常好的.
我不是想隐藏源代码.我只是想提供一个已经编译并且可以使用的库,因此没有编译经验的用户不需要自己动手.
因此,我们的想法是提供一个可以在尽可能多的不同Linux上运行的.so文件.
该库使用STL和Boost库以C语言编写.

最佳答案
我强烈建议使用LSB app / library checker.它会告诉你如果你:

>正在使用某些发行版上没有的扩展名
>在安装脚本中引入bash-isms
>使用所有最新内核中不可用的系统调用
>取决于非标准库(它会告诉你哪些发行版缺少它们)
>很多,很多其他很好的检查

您可以获得more information here以及下载该工具.它易于运行..只需解压缩它,运行perl脚本并将浏览器指向localhost ..其余的是浏览器驱动的.

使用该工具,您可以轻松地获得您的库/应用程序LSB认证(两个版本),并使发行版打包机的工作更容易.

除此之外,只需使用类似libtool(或类似)的东西来确保您的库安装正确,为不想链接DSO的人提供静态对象(您的库需要时间才能出现在大多数发行版中),所以写一个便携式程序,我不能指望它存在)并很好地评论你的公共接口.

对于图书馆,我发现Doxygen效果最好.文档非常重要,它肯定会影响我选择的库以用于任何给定的任务.

实际上,再次检查应用程序检查程序,它将为您提供可移植性问题报告,这将需要一年的时间让图书馆在野外出现以获得其他方式.

最后,尝试使您的库容易“放入树中”,因此我不必静态链接它.正如我所说,它可能需要几年才能在大多数发行版中变得普遍.我更容易抓住你的代码,将它放在src / lib中并使用它,直到你的库是常见的.请,请给我单元测试,TAP(测试任何协议)是一个很好的,可移植的方式来做到这一点.如果我破解你的图书馆,我需要(快速)知道我是否打破了它,特别是在树或原地修改它时(如果存在DSO).

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...