[英]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.