- 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/
我想从 vanilla MSYS 环境下载一个脚本。 在 Linux 上,我会做 wget 在 Mac OS X 上,我会做 curl -O 不幸的是,在 MSYS 的默认安装中,这些替代方案似乎
当我使用 MSYS 编译某些东西时,./configure步骤可能需要比 make 更长的时间.但是,Linux 中的同一进程具有快速配置和慢速生成。这只是 MSYS 中的一些设置,它使我的系统陷入困
我一直在四处寻找,但找不到这 3 个版本的 MSYS 的完整描述。 (完全有可能我只是不知道要寻找什么。)我确实知道 MSYS 是支持使用 MinGW 进行开发的 Linux 工具的最小端口,但我不清
我需要将/DEF:c:\filepath\myLib.def"命令行选项从 bash 脚本传递到 MS 编译器/链接器。该路径是由 bash 脚本作为构建过程的一部分生成的。基本上,参数我的脚本通过的
我有一个 MSYS 安装,我正在编写一个 bash 脚本来设置一些文件。我想从 MSYS 中的 bash 脚本创建一个目录符号链接(symbolic link),但为此我需要使用 mklink/D,这
我计划将我的项目迁移到 git,我目前想知道哪个是 Windows 下最好和/或最稳定的选择。 据我所知,我基本上有 2.5 个选项: MSYSgit git 在 Cygwin 下 (又名 2.5)来
为什么我在 MSYS 中得到这个? 用户@lappy1 ~ $ mkdir 测试 sh: mkdir: 命令未找到 像 cd 和 pwd 这样的基本命令工作得很好。 mkdir 怎么了? 最佳答案 看
请告诉我一个可用于更改文件属性的 MSYS shell 命令。当我运行 ls -l 命令时,我得到以下结果: -rw-r--r-- 1 lenovo Admin .....m4sugar.m4 我想提
我通过 pacman 安装了 cmake 3.2.3。当我尝试从 msys64 shell 中使用它时出现错误: $ cmake -G "MSYS Makefiles" .. CMake Error:
这将是今天最棘手的问题。如何在 MSYS shell 中浏览我的 Windows 文件夹结构?当我启动 shell 时,我看到的只是一个“~”。我输入“ls”,文件夹是空的。我只想知道如何进入我的 C
我在 Windows 下运行 MSYS,虽然它可以工作,但我想知道是否有 MSYS 脚本文件之类的东西。 例如,要在 C 中编译 GTK 程序,我需要键入:gcc source.c -o execut
如果我只安装了“date”命令,我该如何更改 MSYS+MinGW for Windows 的时区?这里没有“tzconfig”或“tzselect”。 当我尝试 $date --set="Apr 0
MSYS 正在向终端打印一些奇怪的字符(空格、空值等)。使我的单元测试结果有点神秘。关于如何解决这个问题的任何想法?我正在研究是否可能将其通过管道传输到将清理输出的脚本。 $ bundle exec
我正在使用 msys-git 并注意到在执行 git pull 后我经常在输出中得到奇怪的字符。我认为这些是某些终端可能理解的某种控制字符,但在标准的 Windows 命令提示符下它们会导致: So
我正在尝试使用 git 来更有效地管理使用 CVS 进行源代码控制的项目,但我遇到了问题 add -ing 一个确实有很长路径的文件 - 276 个字符。 不幸的是,这个文件是由我使用的工具随附的自定
我希望我的 makefile 输出能够进行颜色编码。 但是我无法让 ANSI 颜色代码在此终端上工作。不过,这应该是可能的,ls --color 为我提供了彩色输出,并且我的 shell 提示符也是彩
我一直在尝试从 Windows 机器上的 msys 中的 bash 脚本运行一些 java 程序。具体来说,我在命令行上使用 WEKA 自动执行一些任务。我有一些问题,其中引用的字符串未正确传递给 j
我有一个构建 libcurl 静态库以在我的项目中使用的 makefile(在 Linux 上完美运行)。 我正在尝试使用 MSYS 在 Windows 7 上构建 libcurl,但我正在努力。 在
我在 Windows 中使用 MSYS。我需要访问 MSYS home 文件夹中的文件。 MSYS的/home/username文件夹在Windows C:\文件夹中映射到哪里? 最佳答案 C:\Mi
我正在使用 Mingw 构建一个 C/C++ 项目。这个项目的 makefile 超出了我的理解范围,并且依赖于自定义且相当复杂的工具链来编译它。在 Windows 上使用 GNU 工具非常方便,尤其
我是一名优秀的程序员,十分优秀!