我编写了一个C ++库,当链接到库时,无法找到符号。这就是我所拥有的:
a.cpp:
void zak()
{
}
TEST.CPP:
extern void zak();
int main(int argc, const char ** argv)
{
zak();
}
生成文件:
all:
g++ -c -o a.o a.cpp
ar r libzak.a a.o
g++ -L. -lzak test.cpp -o test
以下是我的(Linux Mint 13)框中的内容:
g++ -c -o a.o a.cpp
ar r libzak.a a.o
g++ -L. -lzak test.cpp -o test
/tmp/ccC4cnLV.o: In function `main':
test.cpp:(.text+0x7): undefined reference to `zak()'
collect2: error: ld returned 1 exit status
make: *** [all] Error 1
我确信我错过了一些明显的东西,但它是什么?
答案 0 :(得分:5)
Link order matters.将-lzak
放在链接行{。}}之后。
答案 1 :(得分:0)
我认为-l适用于共享库(.so)。试试这个:g ++ libzak.a test.cpp -o test