编译c ++应用程序,以便它们也可以在其他计算机上运行

时间:2009-02-10 20:58:00

标签: c++ deployment gcc compilation sdl

所以我有这个非常简单的SDL应用程序,我希望能够传递给我的朋友,而无需下载一大堆SDL软件包。

我怎么能这样做?我被告知使用这一行来编译: (请注意,我使用的是ubuntu linux,我的朋友也是如此,而且这个应用程序编译并运行时没有“-Wl,-Bstatic”选项就好了。)

    g++ test-sdl.cpp -o test-sdl -Wl,-Bstatic -lSDL_image -lSDL

但后来我收到了这个错误:

    /usr/bin/ld: cannot find -lgcc_s  
    collect2: ld returned 1 exit status

为什么我收到此错误?我如何解决它?我甚至不得不这样做吗?是否有不同/更容易/替代的方式?

我是否因为想要保存我的朋友下载他可能永远不会使用的包裹的麻烦而要求这么多?

感谢。

2 个答案:

答案 0 :(得分:3)

从长远来看,最好的办法是找出如何构建.debs然后你朋友的系统包管理可以负责安装所需的所有依赖项。如果您想更广泛地分发软件包,请按照预期使用平台的本机打包系统,这将为您和您的用户带来很多麻烦。

查看Ubuntu的packagingpbuilder指南。

就个人而言,我从Martin Krafft Debian book学习了如何为我自己的项目(在Debian上)做到这一点,并且发现使用yada大大简化了这个过程。

答案 1 :(得分:2)

你应该摆脱-B,我认为(这会改变搜索路径,请参阅man g ++,因此你再也找不到你的库了。)

你想要的开关是-static,没有B。

编辑以回应评论:抱歉,这是不完整的。相反,用“-static”替换所有“-Wl,-Bstatic”。

正如codelogic所写,-static不是链接器的选项(-Wl暗示)。