如何将静态库(.a)添加到C++;节目? 我想知道如何使用C++中的静态库,我首先创建了LIB: // header: foo.h int foo(int a);
然后我首先编译库:如何将静态库(.a)添加到C++;节目? 我想知道如何使用C++中的静态库,我首先创建了LIB: // header: foo.h int foo(int a);,c++,linker,C++,Linker,然后我首先编译库: g++foo.cpp ar rc libfoo.a foo.o 现在我想在一些文件中使用这些库,如: // prog.cpp #include "foo.h" int main() { int i = foo(2); return i; } 我现在必须如何编译这些文件? 我提出: 但由于找不到所需的函数foo,因此出现错误: g++ -L. prog.cpp -lfoo 不幸的是,ld链接器对库的顺序很敏感。当尝试满足prog.cp
// prog.cpp
#include "foo.h"
int main()
{
int i = foo(2);
return i;
}
我现在必须如何编译这些文件?
我提出:
但由于找不到所需的函数foo,因此出现错误:
g++ -L. prog.cpp -lfoo
不幸的是,ld链接器对库的顺序很敏感。当尝试满足prog.cpp中未定义的符号时,它将只查看命令行上出现在prog.cpp之后的库
您也可以在命令行上指定库(必要时使用路径),而不必考虑-L标志:
g++ prog.cpp libfoo.a
g++-L.-lfoo prog.cpp libfoo.a
IIRC@sehe:-lfoo大致相当于在命令行上列出libfoo.a。顺序确实很重要。好的,如果询问者想知道原因,可以用非常简洁的术语解释链接器顺序是从左到右的。(啊,在我添加了这个评论之后,回答者添加了一些补充信息)。
g++ -L. prog.cpp -lfoo
g++ prog.cpp libfoo.a