可以在git-bash中用吗?
我在Git/etc/bash.bashrc里加了
eval "$(lua /tools/z.lua --init bash)"
然后开cmder的bash模式,或者git自带的都报
@echo: command not found
bash: setlocal: command not found
bash: eval: line 78: syntax error near unexpected to ken `('
bash: eval: line 78: `if /i not "%_ZL_LUA_EXE%"=="" ('
当然可以用,问题你要用 git-bash 里面的 lua,怎么能用 windows 的 lua 呢?你莫非想在 git-bash 这种 msys2 环境中用一个 windows 版本的 lua 解释器么?路径规格都不一样,你怎么用?
你自己找个为 git-bash 做的 lua,或者到 msys2 里自己编译一个 git-bash 可以用的 lua 就行。
是mingw编译出来的lua,还是有问题,后来换成wsl就可以用了- -哈哈哈
要 msys2 编译出来的 lua,不是 mingw 编译出来的,后者是 win32 环境的程序,前者才是 msys2 环境的程序
@skywind3000 @lyonscott
试了一下确实需要自己编译一个,花了点功夫编了个 lua, luajit 的包,有 pacman 的 git-sdk 下载下来直接 pacman -U ./xxx.tar.zst 安装,没有的手动解压到 git 软件根目录,需要的自取。地址
其实不需要这么麻烦的
其实出现该问题的原因,在安装Git Bash的过程中,就给出了说明提示。对于 Windows命令/交互式命令 需要在其前加"winpty";如果不添加,则会出现无响应现象
winpty lua就可以了
用的这个 lua 还是不行。msys2 和 mingw 的程序是什么区别呀?
$ pacman -Qo lua.exe
/ucrt64/bin/lua.exe is owned by mingw-w64-ucrt-x86_64-lua 5.4.4-1
包的名字有 mingw- 前缀意思就是这其实是 windows 的程序么
必须要用 msys 的 lua,你的 git-bash 是 msys2 环境,mingw/clang 环境都是纯 windows 的,他们的 lua 不认识 msys2 路径,不能用。
必须要用 msys 的 lua,你的 git-bash 是 msys2 环境,mingw/clang 环境都是纯 windows 的,他们的 lua 不认识 msys2 路径,不能用。
msys2+zsh(pacman 安装的5.9版本) 我编译时使用的是msys2上pacman安装的make pacman的数据库中显示的版本信息: msys/make 4.4.1-2 [已安装] GNU make utility to maintain groups of programs
make --version输出: GNU Make 4.4.1 为 x86_64-pc-msys 编译 Copyright (C) 1988-2023 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later https://gnu.org/licenses/gpl.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
在下载的lua-5.4.6下直接使用make后报错如下,没有可用于msys的构建规则。
make[1]: 进入目录“/downloads/Compressed/lua-5.4.6/src”
Guessing MSYS_NT-10.0-22635
make[2]: 进入目录“/downloads/Compressed/lua-5.4.6/src”
make[2]: *** 没有规则可制作目标“MSYS_NT-10.0-22635”。 停止。
make[2]: 离开目录“/downloads/Compressed/lua-5.4.6/src”
make[1]: *** [Makefile:99:guess] 错误 2
make[1]: 离开目录“/downloads/Compressed/lua-5.4.6/src”
make: *** [Makefile:55:guess] 错误 2
当然我也尝试了构建mingw generic c89的版本,但是在运行z.lua时都和直接下载的二进制的windows版的lua一样出错 make mingw/generic编译版本报错信息(和直接下载二进制l版一样): (eval):76: parse error near `/f'
make c89编译报错信息: @echo off setlocal EnableDelayedExpansion D:\Users\witty\Downloads\Compressed\lua-5.4.6\src\lua.exe: ./z.lua:287: 'popen' not supported stack traceback: [C]: in function 'io.popen' ./z.lua:287: in function 'os.call' ./z.lua:506: in function <./z.lua:496> (...tail calls...) ./z.lua:2790: in function 'z_windows_init' ./z.lua:2004: in function 'main' ./z.lua:2856: in main chunk [C]: in ? 所以到底如何构建msys2版本的lua呢?看样子官方的lua源码并未提供msys的构建规则。
@WittyCo 我上面直接有编译好的版本 https://github.com/zeromake/msys2-packages/tree/master
@WittyCo 我上面直接有编译好的版本 https://github.com/zeromake/msys2-packages/tree/master
知道了,之前试过你的,但是因为不知道git lfs,直接下载下来没法用,现在会用了。感谢!但还是想问一下,你的lua是怎么编译的啊?不用make吗?
@WittyCo 我上面直接有编译好的版本 https://github.com/zeromake/msys2-packages/tree/master
知道了,之前试过你的,但是因为不知道git lfs,直接下载下来没法用,现在会用了。感谢!但还是想问一下,你的lua是怎么编译的啊?不用make吗?
之前处理过 lua 编译看了 makefile 发现用 bsd 模式就可以编译了。
> make bsd
make posix
@skywind3000 @zeromake make bsd和posix我都试过了,都可以。其实我昨天也试过,但是因为当时把windows的环境变量全部导入msys了,导致编译时滥用库,还有很多库文件和可执行文件都找不到,今天关掉了继承windows环境变量的选项就好了。感谢!