我一直在尝试安装一个库(gzstream),它由一个.C,一个.h和一个适当的makefile组成。为了能够使用gzstream.C使用的#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 deniedcompilation terminated.
我做错什么了?
最佳答案
在使用静态库之前,您需要编译它。这将要求您cd到gzstream源代码所在的目录,然后键入make。
这将编译库并创建输出文件libgzstream.a。
一旦准备好了,就可以包含头文件并编译代码。
不需要严格地将gzstream.h复制到/usr/local/include中。它也可能位于源代码所在的本地目录中。那么它可以很容易地包含在
#include "gzstream.h"
查看如何使用双引号代替尖括号来指示当前目录中的相对路径。
g++命令行应该是这样的。
g++aufgabe2.cpp-L.-lgzstream-lz
-告诉链接器在当前目录中查找静态库。这假设libgzstream.a被复制到存在aufgabe2.cpp的源目录中。如果不是,那么给出libgzstream.a所在的-L参数的相对路径。
Arguments-lgzstream和-lz要求链接器链接这些库。
关于c++ - 如何使用g++编译静态库并链接到它?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23089655/