3

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

我该怎么办?有人告诉我使用这一行进行编译:(请注意,我使用 ubuntu linux,我的朋友也是如此,并且这个应用程序在没有“-Wl,-Bstatic”选项的情况下编译和运行就可以了。)

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

但后来我得到这个错误:

    /usr/bin/ld: 找不到 -lgcc_s  
    collect2: ld 返回 1 个退出状态

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

为了让我的朋友免去下载他可能永远不会使用的软件包的麻烦,我是否要求这么多?

谢谢。

4

2 回答 2

3

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

查看 Ubuntu 的打包指南和pbuilder

就个人而言,我从 Martin Krafft Debian 书中学会了如何为我自己的项目(在 Debian 上)执行此操作,并发现使用yada 大大简化了该过程。

于 2009-02-10T21:51:40.403 回答
2

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

您的意思是-static,没有B。

编辑回应评论:对不起,那是不完整的。相反,只需用“-static”替换所有“-Wl,-Bstatic”。

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

于 2009-02-10T21:03:26.260 回答