【问题标题】:hit roadblock while trying to compile lua for emscripten usage, using windows, "unable to find ar rcu"在尝试使用 Windows 编译 lua 以使用 emscripten 时遇到障碍,“无法找到 ar rcu”
【发布时间】:2020-09-24 17:13:41
【问题描述】:

我已经被这个问题困扰了好几个小时,但没有找到任何解决方案。我目前正在尝试为 Emscripten 编译 lua 5.3.4 以在我的项目中使用。我遇到了一个障碍,我需要将它编译成一个 liblua.a 文件,以后在执行 emcc 命令行时会用到该文件。但是有问题。继承人控制台输出和我做什么。我已经让它输出 .o 文件了。我如何将这些放在 .a 中(因为我认为这就是它的作用)

E:\code\liblua>make generic CC="emcc -s WASM=1"
cd src && make generic
make[1]: se ingresa al directorio `E:/code/liblua/src'
ar rcu liblua.a lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o 1lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o liolib.o lmathlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o loadlib.o linit.o
process_begin: CreateProcess(NULL, ar rcu liblua.a lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o liolib.o lmathlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o loadlib.o linit.o, ...) failed.
make (e=2): El sistema no puede encontrar el archivo especificado. (system cannot find the specified file)
make[1]: *** [liblua.a] Error 2
make[1]: se sale del directorio `E:/code/liblua/src'
make: *** [generic] Error 2

它说的是找不到ar rcu,我如何在我的系统上使用它?

作为参考,我尝试使用的系统可以在这里找到https://github.com/vvanders/wasm_lua如果需要的话

【问题讨论】:

  • 是的,我刚刚尝试了您的 rcu 选项,即使存档不存在,它也能正常工作。如果你做ar --version,你的系统会说什么?
  • 我不确定,但它看起来像是在尝试使用 *nix 工具。你可以在你的 Windows 机器上安装 WSL2 + Ubuntu 20.04。感觉非常接近在 linux 机器上工作。 sudo apt install g++ binutils make libc-bin 应该会给你一些基本的工具。
  • 如果可行,您无需使用 powershell 进行任何操作,只需使用 Ubuntu bash shell。我列出的工具可能还不够。当您执行make ... 时,它可能会抱怨其他缺少的工具 - 但至少这样会很简单。您只需要确定该工具存在于哪个包中,然后使用sudo apt install packagename 安装该包
  • 好的,过了一会儿,我又回到了 ar rcu 部分,它现在似乎可以在子系统上工作了。还有另一个错误:liblua.a: Permission denied renca@LAPTOP-JDSC2N7P:~/lua-5.3.4/src$ ar rvs liblua.a ar: liblua.a: Permission denied
  • 奇数...检查权限ls -l liblua.a。文件归root 还是您所有?它应该归你所有,所以sudo chown yourusername liblua.a 如果不是的话。还要检查它是否是可写的,如果不是,就让它。

标签: c++ makefile lua emscripten unix-ar


【解决方案1】:

看起来 需要 Un*x 工具,所以我建议:

  • 安装适用于 Linux 2 (WSL2) 的 Windows 子系统。
  • 在 WSL2 中安装 Ubuntu 20.04 发行版。
  • 双击Ubuntu 20.04 LTS图标启动 shell。
  • shell,安装所需的工具。一个最小的集合是:
    sudo apt install g++ binutils make libc-bin
  • 在您的主目录中的某处解压lua 分发包(作为您自己,而不是root 用户)并尝试构建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 2020-08-23
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 2018-08-11
    相关资源
    最近更新 更多