繁体   English   中英

如何使用g ++编译静态库并链接到它?

[英]How to compile a static library and link to it using g++?

我一直在尝试安装一个库(gzstream),该库由一个.C,一个.h和一个适当的makefile组成。 为了能够使用#include <gzstream.h>使用的#include <gzstream.h> ,我将gzstream.h文件放在/usr/local/include ,并将gzstream.C放在/usr/local/lib

当我尝试编译aufgabe2.cpp时,在终端上收到以下错误消息。 aufgabe2.cpp:1:22: fatal error: /usr/local/include/gzstream.h: Permission denied compilation terminated.

我究竟做错了什么?

在使用静态库之前,需要对其进行编译。 这将要求您cd到存在gzstream源代码的目录,然后键入make

这将编译该库并创建一个输出文件libgzstream.a

准备好之后,您可以包括头文件并编译代码。 无需严格将gzstream.h复制到/ usr / local / include。 它也可能位于您的源代码所在的本地目录中。 然后可以轻松地将其包含

#include "gzstream.h" 

了解如何使用双引号代替尖括号来指示当前目录中的相对路径。

g ++命令行应该是这样的。

g ++ aufgabe2.cpp -L。 -lgzstream -lz

-L。 告诉链接器在当前目录中查找静态库。 假设将libgzstream.a复制到存在aufgabe2.cpp的源目录中。 如果不是,则提供存在libgzstream.a的-L参数的相对路径。

参数-lgzstream和-lz要求链接程序链接这些库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM