2

Crossbridge允许您编译 C/C++ 程序以针对闪存运行时。它在 cygwin 中带有自己修改过的 gcc。由于 SDL 只为 VC 或 mingw 提供开发 zip,我试图在这个 cygwin 环境中编译 SDL。然而,Crossbridge 的 gcc 是 4.2.1 版本,根据谷歌搜索,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 编译器一起使用,它会有所不同吗?

有解决方法吗?

4

2 回答 2

3

我检查了 Crossbridge_1.0.1.zip,cc 和 gcc 可能是断开的链接(只有 56 个字节?)但 gcc-4 似乎很好。

编辑

键入gcc-4gcc从 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 字节大小,这不是真正的编译器,我猜它可能是到真正编译器的符号链接,由于某种原因它没有按预期工作(在 linux 上执行符号链接就像执行真正的二进制文件) .

我不是 cygwin 的专家,但我想在某种程度上支持符号链接,阅读此常见问题解答让我想知道是否某些属性没有丢失打包/解包 zip,因此无法识别符号链接。

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

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按预期返回错误。

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

我不敢相信 Adob​​e 正在分发一个损坏的 SDK,所以也许有一些关于如何正确解压缩 SDK 并保留符号链接的说明(也许 unzip 有一个保留属性选项?我不太了解 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

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

于 2013-08-12T14:09:04.120 回答
1

我使用 Alex 查找/属性循环来修复我的 cygwin 安装中所有损坏的链接。我不知道他们为什么出现。

第一次尝试失败,消息如下:

Invalid switch - /usr/lib/terminfo

对于每个文件属性工作。

原来,对于我的 cygwin/Windows 组合,我必须 cd 进入目录并从那里执行 attrib。所以循环内容是:

do cd $(dirname $f); attrib +S $(basename $f);  done
于 2014-03-01T12:25:21.023 回答