我正在用源引擎编写一个游戏。当我运行make时,过一段时间,归档工具会抱怨无效选项“:
/usr/bin/ar: invalid option -- '.'我安装的每个归档程序都会发生这种情况:gcc-10-ar、llvm-10-ar和busybox ar。
makefile试图运行的命令是:
gcc-ar-10 ../lib/public/linux32/raytrace.a ./obj_raytrace_linux32/release/raytrace.o ./obj_raytrace_linux32/release/trace2.o ./obj_raytrace_linux32/release/trace3.o我不经常使用归档工具,但在我看来,这是一个有效的命令。通常情况下,问题是一个破折号是预先准备的,这使得归档工具认为它所遵循的是像-lm这样的“小选项”。
在我的例子里根本没有破折号。我认为.来自路径,但应该解释为文件路径,而不是命令行参数。
发布于 2022-05-05 18:27:03
ar的第一个参数应该是一个或多个字符,指示要执行的操作(可选前缀为-)和此操作的修饰符。
如果您想要从对象文件中创建一个新的归档文件,您可能需要rcs,它要求ar用替换(r)将列出的文件插入存档中,必要时创建归档文件(c),并为归档(s)创建索引。
例如:
gcc-ar-10 rcs ../lib/public/linux32/raytrace.a ./obj_raytrace_linux32/release/raytrace.o ./obj_raytrace_linux32/release/trace2.o ./obj_raytrace_linux32/release/trace3.o假设ar给出了错误,因为它试图将第一个参数的第一个.解释为这些操作指令之一。
另见man ar。
至于链接存储库(虽然我对它没有经验,这只是一个基于查看其中一个文件的观察):如果在环境中指定了AR,那么Makefile似乎希望它不仅包括到可执行文件的路径,而且还包括上面提到的选项(参见这条线设置默认值)。
这并不是通常对AR环境变量的期望,所以这是非常规的。解决方法是将rcs参数直接添加到环境变量中,例如,如果环境中已经像往常一样设置了AR:
AR="$AR rcs" make而不是
make不要在全局上使用这些选项设置AR,因为其他典型的Makefile都会被它搞混。
https://stackoverflow.com/questions/72131818
复制相似问题