- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
前段时间我问了一个关于这个主题的问题,并通过使用 Cygwin 而不是它的 XWin 实用程序“解决”了它,但我又回到了这个问题,因为 Xwin 实用程序不使用我的 GPU 并创建了一个严重的结果是模拟中的瓶颈。另一方面,MinGW/MSYS 确实使用我的 GPU 进行渲染,这是一个巨大的帮助,但有一些粗糙的区域需要平滑处理,特别是使用 readlink。
基本上,反弹的 src/makefile ( https://github.com/hannorein/rebound ) 是这样说的:
PREDEF+= -D$(shell basename `readlink gravity.c` '.c' | tr '[a-z]' '[A-Z]')
PREDEF+= -D$(shell basename `readlink boundaries.c` '.c' | tr '[a-z]' '[A-Z]')
PREDEF+= -D$(shell basename `readlink collisions.c` '.c' | tr '[a-z]' '[A-Z]')
如果我的理解是正确的,这应该找到我指定的引力、边界和碰撞版本,并将其添加到 PREDEFS,以便编译器使用正确版本的引力、边界和碰撞。但是,它似乎在 MSYS 中不起作用。它最终吐出的预定义是这样的:
-DOPENGL -D.C -D.C -D.C
显然它没有从上面的代码中得到任何返回值。当然,这会导致 macronames must be identifiers 错误。我可以通过在 readlink 和文件名之间添加任何特殊选项来解决这个问题,例如 -f,但它只会吐出
-DOPENGL -DGRAVITY -DBOUNDARIES -DCOLLISIONS
这是不对的,因为它应该有额外的位,像这样:
-DOPENGL -DGRAVITY_DIRECT -DBOUNDARIES_OPEN -DCOLLISIONS_NONE
现在,如果我不想要任何特殊的重力、边界或碰撞,解决方法是可以的,但这只是因为(我猜)如果每个宏名后没有特别指定,它默认为那些。但是如果我确实想要一些特别的东西,比如更有效的重力树代码,或者实际的碰撞,变通方法产生的缩短名称将无助于它找到任何东西,因此它会导致编译错误,因为它需要特殊文件的某些功能显然都不见了。
所以我现在很困惑。我非常希望能够使用默认代码以外的其他代码,但是 MSYS 对阅读链接表现得很滑稽,没有找到正确的东西。正如我所说,它在 X windows 风格的编译器中运行良好。我觉得一定有一些库我丢失了,或者我忽略了一些隐藏的语法断开连接,需要在 XWin 和非 Xwin 编译之间进行解释,但我找不到任何东西。
这是它应该阅读的链接示例(至少我认为这是正在阅读的内容,我仍在学习 makefile):
ln -fs gravity_tree.c ../../src/gravity.c
ln -fs boundaries_open.c ../../src/boundaries.c
ln -fs collisions_none.c ../../src/collisions.c
如果有人能告诉我为什么这可以在 Xwin 命令行而不是 MSYS 上运行,我将不胜感激。
最佳答案
你究竟为什么希望 readlink
在 MSYS 中工作?您从哪里得到正在调用的任何 readlink.exe
(如果正在执行)? 标准 MSYS 安装中没有readlink
命令。也许您是在 MinGW.org 的 msys-coreutils-ext
包中发现它的?如果是这种情况,您应该注意该软件包描述中的注释(如通过 MinGW.org 的 mingw-get
安装程序所见):
The msys-coreutils-bin subpackage contains those applications that were historically part of the standard MSYS installation. The associated msys-coreutils-ext subpackage contains the rest of the coreutils applications that have been (nominally) ported to MSYS -- usually these are less often used, and are not guaranteed to work: e.g. 'su.exe', 'chroot.exe' and 'mkfifo.exe' are known to be broken.
而且,我们似乎可以将 readlink.exe
添加到“已知已损坏”应用程序的列表中。
可能还值得注意的是,readlink
不在支持工具列表中,GNU Coding Standards允许符合要求的应用程序从其 configure
脚本或其 makefile
调用。因此,MinGW.org 开发人员(维护 MSYS)几乎没有动力去解决使 readlink.exe
工作的问题,(尽管来自独立开发人员的补丁具有这样的动力,将受到欢迎)。
作为最后的资格,作为对问题注释的评论,ln -s
创建文件的副本;它不创建符号链接(symbolic link)。怎么可能呢? MSYS 本身可以追溯到 windows 不支持符号链接(symbolic link)的时代……事实上,即使在今天,它对符号链接(symbolic link)的支持也很不稳定。在发布 MSYS 时,复制文件或创建 NTFS 硬 链接是 MSYS 在脚本调用 ln -s
的情况下可以提供的最佳折衷方案>。因此,任何开发人员都有责任提交补丁以使 readlink.exe
正常工作,同时解决更新 ln.exe
的问题,以便它可以创建符号链接(symbolic link),(以操作系统版本相关的方式),然后 readlink.exe
将读取。
如果这不是您希望的答案,我很抱歉,但是除非有人投入一些精力来更新 MSYS,以便它可以在更新的 Windows 版本中使用(不可靠的)符号链接(symbolic link)功能,否则您需要找到不同的方法;当前的 MSYS 不支持符号链接(symbolic link),即使底层操作系统现在支持。
关于c - Readlink 找不到 C 文件 (MSYS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31616700/
我正在尝试在 Windows 上运行的小于 1GB 的 VM 上设置 YouTrack 和 TeamCity。使用率将非常低(用户和请求)。这是一个 POC 环境,如果它有效,我可能会将它推送到一个超
所以我在尝试使用 FORFILES 解决这个问题时遇到了麻烦。我正在尝试获取不超过 4 天的文件。所以基本上少于 4 天。然而,这似乎不太可能,因为/d -4 获取所有 4 天或更早的项目。 以下是我
如何从下面的 events 表中选择小于 15 分钟前创建的 events? CREATE TABLE events ( created_at timestamp NOT NULL DEFAU
Google Analytics Realtime提供 rt:minutesAgo ,可以过滤查询。 然而,它是一个维度而不是一个度量标准,<=不能在过滤器中使用。 假设我想在最后 n 分钟内获得一些
iOS 核心数据 - 严重的应用程序错误 - 尝试插入 nil 你好, 我的应用程序实际上运行稳定,但在极少数情况下它会崩溃并显示此错误消息... 2019-04-02 20:48:52.437172
我想制作一个 html div 以快速向右移动(例如不到 1 秒)并消失。然后1秒后再次直接出现在这个过程最开始div的位置。此过程将由单击按钮并重复 10 次触发。 我试图在 CSS 中使用过渡属性
我发现使用 TimeTrigger 是 Windows 10 (UWP) 上计划后台任务的方式。但是看起来我们需要给出的最小数字是 15 分钟。只是想知道,即使我们安排它在接下来的 1 分钟内运行,警
我必须在 1 秒内在屏幕上打印 2^20 行整数 printf 不够快,还有其他易于使用的快速输出替代方法吗? 每一行只包含 1 个整数。 我要求它用于竞争性编程问题,我必须将其源代码提交给法官。 最
我是一名优秀的程序员,十分优秀!