【发布时间】:2014-08-29 17:05:07
【问题描述】:
这是一个非常基本的问题,我在网上找到了很多概念性的答案,但未能真正发挥作用。
这是我所拥有的:
文件来源.cc
#include <iostream>
int myfunc() {
return 42;
}
int main() {
return 0;
}
然后我通过以下方式创建一个目标文件 source.o:
g++ -c source.cc
最后,我使用
ar rvs source.a source.o
获取 source.a 静态库。
现在,麻烦来了。
文件 user.cc 如下所示:
#include <iostream>
#include <source.a>
int main() {
std::cout << myfunc();
}
我显然想使用库中定义的函数,但是在尝试编译 user.cc 时:
g++ user.cc -o user
我得到的错误是:
user.cc:2:22: fatal error: source.a: No such file or directory
compilation terminated.
【问题讨论】:
-
尖括号通常不会搜索当前目录,但这不是重点。我非常怀疑您是否要包含 .a 文件。链接到它。
-
你没有包含一个库,你链接一个库。您还需要函数的声明(通常放在头文件中)。您可能还会看到链接也定义了
main的库时出现问题。