本文已参与「新人创作礼」活动,一起开启掘金创作之路
在使用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了
之后能够正常进行编译链接
Tips: 发现问题比解决问题更难。面对命令行输出的一串错误,能够找出问题所在才是重要的,有时候一个问题会导致几十个错误输出。而如果不知道问题所在,将会浪费很多精力在这些表面的错误上。
解决办法:
对于msvc命令提示工具,在编译程序时会从系统环境变量中去寻找link.exe去链接程序,对于这种情况,只需要确保msvc中设置的系统环境变量位置保持在cygwin环境变量位置之前就可以了,系统会优先搜索msvc的link.exe程序。
在vs的命令提示工具中这样进行设置
set PATH=%PATH%;C:\cygwin
而之前的设置方式则是
set PATH=C:\cygwin;%PATH%
这样就会先搜寻cygwin的link.exe,导致前面出现的问题了