首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gcc-10-ar认为无效“。选项正在传递给它。

gcc-10-ar认为无效“。选项正在传递给它。
EN

Stack Overflow用户
提问于 2022-05-05 18:09:02
回答 1查看 176关注 0票数 1

我正在用源引擎编写一个游戏。当我运行make时,过一段时间,归档工具会抱怨无效选项“:

代码语言:javascript
复制
/usr/bin/ar: invalid option -- '.'

我安装的每个归档程序都会发生这种情况:gcc-10-arllvm-10-arbusybox ar

makefile试图运行的命令是:

代码语言:javascript
复制
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这样的“小选项”。

在我的例子里根本没有破折号。我认为.来自路径,但应该解释为文件路径,而不是命令行参数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-05 18:27:03

ar的第一个参数应该是一个或多个字符,指示要执行的操作(可选前缀为-)和此操作的修饰符。

如果您想要从对象文件中创建一个新的归档文件,您可能需要rcs,它要求ar用替换(r)将列出的文件插入存档中,必要时创建归档文件(c),并为归档(s)创建索引。

例如:

代码语言:javascript
复制
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

代码语言:javascript
复制
AR="$AR rcs" make

而不是

代码语言:javascript
复制
make

不要在全局上使用这些选项设置AR,因为其他典型的Makefile都会被它搞混。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72131818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档