Joh*_*ren 10 c++ linux portability
帮我解决一个分数.
我有一个用C++编写的软件,它可以在尽可能多的Linux发行版上运行,我需要找出一个有效的策略.我试图在这种情况下发送二进制文件而不是源代码(可能很高兴知道).它已经是商业产品,我有知识产权问题阻止我公开采购产品,但也意味着我必须处理无数的GPL问题.
目前的推理方法是选择一个最小公分母并将其全部构建出去.这有两个主要含义,我觉得反作用.
我绝对不需要整个C++ 11功能集,但我想将C++支持带到Visual C++ 2010的支持.我正在尝试使用Clang/libc ++而不是GCC/libstdc ++在可能的情况.
RHEL4似乎没有为构建C++应用程序提供广泛的跨平台支持,更重要的是,我对不同版本的linux中ABI的稳定性几乎一无所知,但我担心RHEL4比实际值得多麻烦.尝试基于少数几个版本构建所有版本并不是一个可行的策略.
我假设通过在目标平台上使用工具编译目标平台的软件来最好地完成为不同Linux发行版编译软件.我目前也在假设如果你不接受这个问题,你会遇到跨越Linux平台的大量可移植性问题.不要谈论由于跨平台/分布的C++ ABI不稳定而导致您可以或不能链接的许多库.
但我可能错了,我想听听那些定期处理这个问题的人.什么会起作用,为什么?或者更重要的是,哪些不起作用?
小智 7
您可以尝试专注于几个主要平台而不是单个发行版.我的意思是建立在我称之为"基础发行版"(Debian和RedHat)的基础上,并希望在其他人身上做到最好.
最有可能的是,Debian二进制文件(静态链接)在Ubuntu和Mint以及其他Debian派生的发行版上运行得很好.RedHat二进制文件可能运行在Centos,Scientific Linux和SuSE Linux上.如果你关心不太受欢迎的发行版(假设你有很多客户运行一些不常见的Linux),并且你的Debian或RedHat可执行文件都不能正常工作或者可以以某种方式工作,那么设置一个该发行版的虚拟机并构建一个可执行文件特别是那种味道.
我过去采用过这种方法,效果很好.