我试图将存档文件链接到我的简单hello world应用程序中,以确保我理解该过程。但是,我显然没有,因为图书馆没有正确链接。
这是我的简单应用程序(hello.cc):
#include <iostream>
#include "firebase/app.h"
int main()
{
std::cout << "Hello, world!\n";
std::cout << std::endl;
return 0;
}
这是我的编译命令,链接:
gcc hello.cc -L /tmp -l app -o hello -lstdc++
我已将存档文件(libapp.a)移至/ tmp。
我的理解是-L <dir>
添加目录以搜索lib*.a
个文件,-l <name>
表示存档文件的名称,格式为lib<name>.a
。我知道它没有链接存档文件,因为我收到了这个错误:
hello.cc:3:26: fatal error: firebase/app.h: No such file or directory
#include "firebase/app.h"
但是,我也不认为编译命令符合我的想法,因为我将libapp.a
重命名为libapp.a2
并且返回了相同的错误,而不是指示存档文件丢失了。
有人可以帮助我a)链接库文件/tmp/libapp.a
的命令和b)解释我做错了什么?
我忘了包含标题,这引起了我认为的初始错误。现在,我已经包含了标题,其中包含以下内容:
gcc hello.cc -L /tmp -l app -I /tmp/firebase/include -o hello -lstdc++
我收到了这个新错误:
/usr/bin/ld: cannot find -lapp
collect2: error: ld returned 1 exit status
所以,我认为我没有正确使用-L和-l,但不确定我到底做错了什么。
固定。忘了我试图找出第一个问题时重命名了lib文件。一旦我将其命名为libapp.a
,该应用就会按预期运行。