在Hello World应用程序

时间:2016-07-05 22:26:29

标签: c++ static-linking

我试图将存档文件链接到我的简单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,但不确定我到底做错了什么。

EDIT2

固定。忘了我试图找出第一个问题时重命名了lib文件。一旦我将其命名为libapp.a,该应用就会按预期运行。

0 个答案:

没有答案