我被要求用C++11重写一个旧的C/C++项目,旧的项目是多平台的,但是为了在其他架构上部署系统,当前的过程是登录到一个拥有所有可用目标平台( remote、Umbuntu、Sco等)的远程服务。并在每个发布平台上构建.exe。
我是否可以向用户发送一个包,在他们的架构上进行自我编译,并在不提供源代码的情况下构建正确的.exe?
我也开放交叉编译,以避免不得不登录到不同的服务器,并为每个平台进行编译。使用交叉编译器为不同的体系结构编译代码有多容易?
发布于 2014-07-03 13:04:35
不是的。没有源代码就无法编译源代码。
但是您可能可以在本地编译甚至交叉编译代码,并发送不同的已编译文件。
my_exe_rhel8
my_exe_ubuntu_x64然后用户可以启动正确的。
理想情况下,您已经为这些系统打包了二进制文件,所以对于ubuntu,您应该准备一个.deb,一个红色帽子,一个rpm。这样,客户端就可以更容易地确保获得正确的版本、安装依赖项等等.
正如Btrfl所指出的,您可以使用VM轻松地创建一个安装程序,您可以在其中本地编译各自平台上的所有二进制文件。
发布于 2014-07-03 14:22:36
我想您可以使用LLVM将源代码编译为字节码,然后使用它生成二进制文件,但是.这是很多未知的麻烦,因为它是很容易解决,通过改变你的立场如此轻微。
发布于 2014-07-03 14:00:54
如果可执行文件不太大,可以将它们全部打包,然后分发一个安装程序来选择和安装正确的可执行文件吗?客户最终会得到每个平台的编译代码的版本,但是如果您只是将它们压缩到一个文件中,他们就不会知道有什么区别。当然,如果您有空间限制,这可能不起作用。
https://softwareengineering.stackexchange.com/questions/246770
复制相似问题