几个Linux发行版的一个二进制文件,一个用于所有的编译器

时间:2016-07-26 18:29:16

标签: c++11 cross-platform libc libc++ musl

第一个问题:支持各种标准的最佳方式是什么?具有单个C ++ 11二进制文件的Linux平台? 这个二进制文件使用了一些第三方库,包括boost,zlib,xml2,openssl(所有这些都是 我可以静态建立。

二进制文件必须在x86_64的各种Linux平台上运行:Ubuntu 16.04和14.04,Centos 7.2和Debian。 不久它必须在Beagle Bone Black上运行Darwin x86_64和Ubuntu 16.04。

编译器的默认版本,libstdc ++和libc运行时在这些平台上有很大差异。 我在Ubuntu 14.04上有一些Linux成功,它有一个升级的(toolchain r-test)g ++ 5.3编译器 使用这些编译器选项(注意不要使用" -static"开关):

-static-libstdc++ -static-libgcc -D_GLIBCXX_USE_CXX11_ABI=0

但是,这需要在主机上安装升级的5.3编译器(默认值为4.9 IIRC)和 目标平台上的一些运行时库不是首选的,并且存在libc.so的风险问题。 如果应该确定这种解决方案是最好的,那么我宁愿继续发展 16.04使用最新的g ++或clang与开关,所以二进制文件在旧平台上运行 对默认值的最小更改。是的,我知道我可能要求登月:)

第二个问题:而不是一个二进制文件,可能是包含Darwin和Windows在内的所有平台的一个编译器和libc?

我还在考虑尝试使用musl来创建一个表现更为一致的二进制文件。我可以考虑使用clang而不是g ++。

有经验/建议的人吗?我非常想避免维持 为每个平台分别编写第三方库和编译器的组合和组合以及设置和升级(特别是对于Linux目标,但对于不同的操作系统而言非常典型)。

使用相同版本的相同编译器和可能相同版本的libc是最好的 但可能不可能:与musl铿锵?

由于

0 个答案:

没有答案