【发布时间】: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 installpackagename安装该包 -
好的,过了一会儿,我又回到了 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