usr_bin_link_extra operand

⌚Time: 2022-04-18 19:47:02

👨‍💻Author: Jack Ge

我在使用cygwin配合vs2010编译dds库时出现该问题

/usr/bin/link:extra operand

原因是链接时使用的link.exe程序是cygwin系统中自带的,而应该调用的是msvc的link.exe

在命令行中输入link --help,明显是gnu的link.exe程序,而此link.exe程序与c++的编译链接没有任何关系,自然会出现错误

在这里插入图片描述

解决办法就是将cygwin中使用的link.exe默认设置为调用msvc的link.exe。 大概就是环境变量的配置问题。

自己使用了一种笨方法:

$ mv /usr/bin/link.exe /usr/bin/link.exe.bak
$ ln -s /cygdrive/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio\ 10.0/VC/bin/link.exe /usr/bin/link.exe

将cygwin自带link.exe改名,新建一个link.exe软连接,指向msvc的link。这样cygwin调用的就是msvc的link了

在这里插入图片描述

之后能够正常进行编译链接


后来的解决办法:

只需要确保系统环境变量位置保持在cygwin环境变量位置之前就可以了,系统会优先搜索msvc的link.exe程序

在vs的命令提示工具中

set PATH=%PATH%;C:\cygwin

而不是

set PATH=C:\cygwin;%PATH%

之后使用vs命令提示工具对项目进行编译就可以了