使用静态库编译C++

Compile C++ with static lib

本文关键字:编译 C++ 静态      更新时间:2023-10-16

这对你们来说可能是一个愚蠢的问题,但我没有任何经验C++。我正在使用一个开源项目 osrm(这很棒)。仍然要请求路由,您已经发出了 http 请求。为了减少运行时间,我想围绕代码构建一个包装器并使用命令行调用它。所以我用谷歌搜索了一下,发现osrm在编译项目时已经创建了一个静态库(.a文件)。我还找到了一段代码,为我指明了构建包装器的正确方向。因此,首先,我构建了一个简单的hello world程序(见下文),其中包含来自该静态库的一些文件。为了编译,我遵循了本教程。我的目录结构如下所示:./你好世界.cpp./libs/libOSRM.a

编译的命令是这样的:

gcc –static helloworld.cpp –L ./libs –l libOSRM.a

它自己的代码:

#include "Router.h"
#include "boost/filesystem/path.hpp"
#include "ServerPaths.h"
#include "ProgramOptions.h"
#include <InternalDataFacade.h>
#include <viaroute.hpp>
#include <iostream.h>
main()
{
   cout << "Hello World!";
   return 0;
}

我得到的确切错误:

致命错误: ServerPaths.h

: 没有这样的文件或目录 #include"ServerPaths.h"

-IPathToTheHeaderFiles添加到编译器选项中。因此,它将找到要包含的文件。将 PathToTheHeaderFiles 替换为文件 ServPaths.h 所在的路径。

编辑:根据需要添加尽可能多的-I以获取更多头文件。

此外,值得

阅读一本关于C++或/和 GCC 手册1 的书

1 第 3.11 节会有所帮助。