我使用终端时有点新手,所以如果你帮我解决这个问题,我会说很多。
这个名为mismatch的小文件夹带有我下载的代码,假设有四个这样的参数
./ mismatch / mismatch 3 1 $ {SFILE}
并计算蛋白质序列的错配评分。文件夹'mismatch'包含mismatchManager.cc,makefile和名为“CVS”的文件夹。
在makefile中,
all: mismatchManager.cc
g++ mismatchManager.cc -o ../../bin/mismatch -lm
快速搜索之后,我发现当你想命名.exe文件时使用-o,而-lm用于将可执行文件链接到我认为是“bin”的库。因此,当我从终端运行“make”命令时,它发出以下错误。
ld: can't open output file for writing: ../../bin/mismatch, errno=2
collect2: ld returned 1 exit status
我认为“bin”目录可能是/ usr / local / bin,其中存储了可执行文件,因此我将上述路径替换为此路径,但是它给出了相同的错误。这里有一个ErrNo = 21 Why does the name of a source file affect compilation?的解决方案,因为它告诉我没有名为mismatchManager的文件夹。
我还将make文件改为
all: mismatchManager.cc
g++ -o mismatch mismatchManager.cc
然后运行“make”命令。它工作得很好,然后我手动将mismatch.exe复制到/ usr / local / bin。这次我能够传递参数,但我没有产生任何结果。我不知道该怎么做。
谢谢!
答案 0 :(得分:1)
好的链接器。甚至无法为您解释错误代码?瘸。无论如何,errno=2
是"访问违规",这意味着您无权写入或创建文件../../bin/mismatch
。
我无法说明为什么会这样,因为我不知道你的系统中../../bin
是什么,但肯定会将其更改为/usr/local/bin
从而无法提供帮助你可能也没有对该目录的写权限。
您可以尝试将其更改为-o mismatch
,这将在当前目录中写出一个名为mismatch
的文件,您很可能对该文件具有写入权限。
BTW,您的语句 -lm用于将可执行文件链接到我认为是" bin"这里不正确。 -lm
要求链接器链接到m
或数学库。 bin
不是一个库,它是一个目录(或者某些人称之为"文件夹"),它与参数-lm
无关。