/usr/local/include中没有zlib.h文件,如何获取它?

11

我一直在尝试运行需要Zlib库的C++程序,但在编译文件时出现了“zlib.h文件或目录不存在”的错误。在查看了usr/local/include后发现该文件并不存在。我是否可以将该文件复制到该位置,还是需要安装什么东西。由于我对Ubuntu比较陌生,请帮忙解决。


在Linux Ubuntu上安装/构建Swift Vapor时,问题和答案也是非常有用的。 - Darrell Root
2个回答

30

使用以下命令安装带有开发支持的 zlib

sudo apt-get install zlib1g-dev

如果您不想或者不需要使用完整的zlib库,那么编写一个简单的封装程序即可将zlib函数一对一地映射到普通文件函数,这些函数不支持压缩和解压缩。

//
//  dummy zlib.h
//

#pragma once
#include <stdio.h>

typedef FILE *gzFile;

int gzclose(gzFile file);
gzFile gzdopen(int fd, const char *mode);
gzFile gzopen(const char *path, const char *mode);
int gzread(gzFile file, void *buf, unsigned int len);


//
//  zlibDummy.cpp
//

#include <zlib.h>

int gzclose(gzFile file)
{
    return fclose(file);
}

gzFile gzdopen(int fd, const char *mode)
{
    return _fdopen(fd, mode);
}

gzFile gzopen(const char *path, const char *mode)
{
    return fopen(path, mode);
}

int gzread(gzFile file, void *buf, unsigned int len)
{
    return fread(buf, 1, len, file);
}

-2

谢谢你的回答,我觉得这个方法会起作用,但是Axel的方法更好。 - rac cool
除非您确定它对应于您将链接到的已安装库,否则仅安装zlib.h有些冒险。更安全的做法是使用apt-get、yum、brew或您系统使用的任何软件包管理器来安装libz和zlib.h。 - Glenn Randers-Pehrson
我写下这篇回答是为了快速进行开发。虽然我绝不建议这样做。而且我自己也不会这样做。 - Akash Lodha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接