【发布时间】:2015-06-24 01:23:26
【问题描述】:
我正在尝试在我的 Macbook 上执行一个名为“palindrome.cpp”的 cpp 文件使用终端。此 cpp 文件使用名为“libStanfordCPPLib.a”的外部库,该库位于“DIRECTORY TO CPP FILE/StanfordCPPLib”下,该库的相应头文件也在此“StanfordCPPLib”文件夹中。
你可以通过这个截图看到文件夹结构:
我编译这个源代码的代码是:
g++-4.8 -Wall -I/Users/myName/Downloads/CS106B/palindrome/StanfordCPPLib -L/Users/myName/Downloads/CS106B/palindrome/StanfordCPPLib palindrome.cpp libStanfordCPPLib.a
据我了解,-I代表头文件所在的目录路径,-L代表库(.a文件)所在的目录路径。这就是为什么 -I 和 -L 是相同的目录路径“/Users/myName/Downloads/CS106B/palindrome/StanfordCPPLib”。
但是,执行此命令会返回错误消息:“libStanfordCPPLib.a:没有这样的文件或目录”。如截图所示:
谁能明白为什么会这样?谢谢。
【问题讨论】:
-
尝试执行相同的命令,从库名称“StanfordCPPLib.a”或“StanfordCPP.a”中删除部分“lib”......因为据我所知,链接器将为您的库添加前缀和后缀在搜索之前用 lib 命名。
-
不,它仍然无法工作。错误信息是“error: StanfordCPP.a: No such file or directory”
-
你尝试过 StanfordCPPLib.a 吗?
-
嗨,我已经通过将 LibStanfordCPPLib.a 更改为 -lStanfordCPPLib 解决了这个问题。然后就可以编译了
标签: c++