6

我已经在我的计算机(Ubuntu 12)上成功编译了一个程序(包括 SDL)并且a.out运行良好!

现在,如果我把它a.out发给朋友,它就是行不通的。(给出简单的错误消息("Can't be run..")或其他东西)但是如果我再次在我朋友的计算机上编译相应的源文件,它就可以了!

我如何打包/编译/制作我的程序以使其可在其他计算机上运行?

4

2 回答 2

5

可执行文件通常特定于创建它们的环境/机器。即使涉及相同的处理器/硬件,也可能存在对库的依赖,这可能会阻止可执行文件仅在其他机器上运行。

您可以发送带有编译说明的源代码吗?假设没有 NDA 或其他问题阻止该方法(我只建议,因为你提到这对你有用)

当然,最终还是有可能的,毕竟这就是二进制文件的分发方式,但是它们将被仔细构建,并且将具有静态链接的库(即,所有内容都是可执行文件的一部分)。

于 2012-07-11T13:03:11.523 回答
2

请您的朋友执行以下操作:

 chmod +x a.out
 ldd a.out

他看到了什么?当然,我假设这两个环境在很大程度上相似(例如,都运行 Ubuntu 等)

于 2012-07-11T13:28:50.033 回答