c++ - 在 Adob​​e Crossbridge 的 Cygwin 中编译 SDL

标签 c++ gcc cygwin sdl

Crossbridge允许您编译 C/C++ 程序以针对 flash 运行时。它在 cygwin 中附带了自己修改的 gcc。由于SDL只提供VC或mingw的开发zip,我试图在这个cygwin环境中编译SDL。然而,Crossbridge 的 gcc 版本是 4.2.1,根据 google 搜索,SDL 无法在 cygwin 内使用高于 3 的 gcc 版本进行编译。当我运行 ./configure 时,它失败并显示:

*** Your compiler (/cygdrive/c/Users/Tom/Desktop/Crossbridge_1.0.1/sdk/usr/bin/g
cc.exe -jvmopt=-Xmx1G) does not produce Win32 executables!

当我单独输入 gcc 时,我得到:

bash: /usr/bin/gcc: cannot execute binary file

如果我使用一个编译器(即较低版本的 gcc)编译 SDL 并尝试将其与 Crossbridge 编译器一起使用,会有什么不同吗?

有解决办法吗?

最佳答案

我检查了 Crossbridge_1.0.1.zip,cc 和 gcc 可能是损坏的链接(只有 56 字节?),但 gcc-4 似乎不错。

编辑

输入gcc-4当您输入gcc时从 bash 中,您会看到通常的预期 no input files gcc的错误信息,试试gcc-4 -v

消息Your compiler does not produce Win32 executables是因为您执行的(或自动执行的)任何内容都使用 /cygdrive/c/Users/Tom/Desktop/Crossbridge_1.0.1/sdk/usr/bin/gcc.exe作为您的编译器,但正如您已经检查过的那样,它不起作用,如果您使用 ls -l /usr/bin/gcc.exe 检查它你会看到这只有 56 字节大小,这不可能是真正的编译器,我猜它可能是到真正编译器的符号链接(symbolic link),由于某种原因它没有按预期工作(在 Linux 上执行符号链接(symbolic link))与执行真正的二进制文件一样)。

我不是 cygwin 专家,但我想在某种程度上支持符号链接(symbolic link),阅读这篇文章 FAQ让我想知道是否某些属性没有丢失打包/解包 zip,从而无法识别符号链接(symbolic link)。

尝试重新创建它(它对我有用):

cd /usr/bin # change directory
rm gcc.exe # remove the broken link
ln -s gcc-4.exe gcc.exe # re-create the symlink

运行gcc再次,应该返回 no input files错误如预期。

但这不是解决方案,因为在解压缩的文件中可能有许多损坏的符号链接(symbolic link)。

我不敢相信 Adob​​e 正在分发一个损坏的 SDK,所以也许有一些关于如何正确解压缩 SDK 并保留符号链接(symbolic link)的说明(也许解压缩有一个保留属性选项?抱歉,我对 zip 不太了解。

编辑

执行run.bat (bash)并cd到解压SDK的主目录(我的是/cygdrive/c/crossbrige)

cd /cygdrive/c/crossbrige

for f in $(find ./ -type f -print0 | xargs -0 grep '!<symlink>' -l); do attrib +S $f; done

这有望修复所有损坏的符号链接(symbolic link),唯一的副作用是任何包含 !<symlink> 的文件将设置属性 DOS SYSTEM,但 cygwin 检查偏移量 0 处的这个魔术字符串和 S 属性以将文件视为符号链接(symbolic link),因此希望不会破坏任何内容。

关于c++ - 在 Adob​​e Crossbridge 的 Cygwin 中编译 SDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17664723/

相关文章:

c++ - 在 OpenGL 中渲染 QWidget

c++ - 查找所有不重复的组合

c - 从目标文件内联函数

c++ - 带有旧版本库的 MinGW

eclipse - windows下如何让gdb与Eclipse CDT一起工作(找不到源代码)

c - NetBeans IDE 6.8 与 cygwin 1.7.5.1 不能很好地工作

mongodb - Mongoose、Cygwin 和 MongoDB - 不保存

c++ - 使用 TI-MSP430 的 DSP 的 C/C++ 库或示例代码

c++ - 此示例中 cppreference 中的任务是什么?

c++ - 试图了解 GCC 错误