我一直在尝试安装一个库 (gzstream),它由一个 .C、一个 .h 和一个适当的 makefile 组成。能够使用 #include <gzstream.h>
,gzstream.C 使用,我将 gzstream.h 文件放在 /usr/local/include
中和 /usr/local/lib
中的 gzstream.C .
当我尝试编译 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 要求链接器链接这些库。
关于c++ - 如何编译静态库并使用 g++ 链接到它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23089655/