2

我正在尝试安装一个程序(vcftools),其 Makefile 内容如下:

# Make file for vcftools
# Author: Adam Auton
# ($Revision: 230 $)

# Compiler
CPP = g++
# Output executable
EXECUTABLE = vcftools
# Flag used to turn on compilation of PCA routines
ifndef VCFTOOLS_PCA
        VCFTOOLS_PCA = 0
endif
# Compiler flags
CPPFLAGS = -O2 -Wall -Wextra -D_FILE_OFFSET_BITS=64
#CPPFLAGS = -g 
# Included libraries (zlib)
#LIB = -lz 
LIB = -lz -I/usr/local/include/ -L/usr/local/lib/


OBJS = vcftools.o vcf_file.o vcf_entry.o \
                vcf_entry_getters.o vcf_entry_setters.o \
                vcf_file_filters.o vcf_file_output.o \
                vcf_file_format_convert.o \
                vcf_file_diff.o parameters.o \
                vcf_file_index.o \
                output_log.o

我无法让这个 Makefile 正确运行,而是得到一个错误,内容如下:

vcf_file.cpp:(.text+0xe72): undefined reference to `gzbuffer'
collect2: ld returned 1 exit status
make[1]: *** [vcftools] Error 1
make[1]: Leaving directory `/home/Public/Packages/vcftools_0.1.10/cpp'
/bin/sh: 2: cd: can't cd to perl
make: *** [install] Error 2

我认为部分问题是与我的 zlib 安装路径相关的错误。我尝试更改 -I 和 -L 路径以匹配我的 zlib 安装,但没有任何运气(有很多文件夹似乎包含 zlib 文件)。

此外,通过搜索与该程序相关的其他论坛(此处),似乎我可能需要 zlib1g-dev。zlib1g-dev 在我的电脑上(它显示在我的 ubuntu 软件中心),但是当我进入时没有显示:

root@root:/home/Public/Packages/vcftools_0.1.10/cpp# whereis zlib1g-dev
zlib1g-dev:
root@root:/home/Public/Packages/vcftools_0.1.10/cpp# which zlib1g-dev

我考虑过删除并重新安装 zlib,但看起来有几个程序依赖于它。尝试运行安装或删除时,我收到以下消息:

sudo apt-get install zlib-devel

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package zlib-devel

我不确定问题是否出在我的计算机上安装 zlib 的位置、安装中的错误,或者其他完全在我脑海中的问题。任何建议将不胜感激。谢谢你。

4

6 回答 6

1

在我的系统(Ubuntu 12.04.3 LTS)上,这是一个库位置问题。
确保安装了 zlib1g-dev。
在 vcftools_whatever/cpp/Makefile 中,更改

LIB = -lz

LIB = -L/usr/local/lib/ -lz
于 2013-12-15T00:48:07.803 回答
0

在该区域的 obuntu 中有一个错误,其中特定库的声明必须出现在库路径的声明之后。

在你的makefile中,-lz只能放在后面 -L/usr/local/lib/

我建议将 LIB 声明更改为以下声明 - 这应该可以解决问题

LIB = -I/usr/local/include/ -L/usr/local/lib/ -lz
于 2016-09-01T08:05:35.357 回答
0

我想你错过了开发包。它不像您尝试的那样被称为 zlib-devel,

sudo apt-get install zlib-devel

但是zlib1g-dev。所以你要运行的命令是:

sudo apt-get install zlib1g-dev

于 2018-10-24T07:59:57.707 回答
0

对于vcftools不得不修改,配置后:

  1. 生成文件

  2. 源/生成文件

  3. src/cpp/Makefile

在每个中,转到 LIBS 并输入:

LIBS = -L/tools/hpclib/zlib-1.2.8/lib -lz -lgomp

这是在上面特定位置编译的带有 zlib 的 centos 上。

于 2021-03-19T21:13:59.317 回答
0

这对我有用,把它放在我的 Makefile 中:

顺便说一句,我花了 10 分钟让它不起作用,因为我在这一行的末尾离开了 lib 并且只有根路径。

LIBS = -L/tools/hpclib/zlib-1.2.8/lib -lz -lgomp(工作)

LIBS = -L/tools/hpclib/zlib-1.2.8 -lz -lgomp(没用)

希望对某人有所帮助。它用于编译一个名为 stacks 2.41 的程序

于 2019-10-03T18:52:39.477 回答
0

我通过搜索对 gzbuffer var 的未定义引用找到了这一点。在 CentOS-6.6 Linux 机器上从源代码编译 ImageMagick 时出现错误。我必须做两件事:1)根据建议重新。Ubuntu,通过 travc,您编辑 Makefile,查找“LIBS =”(在我的情况下为空白),并将其更改为“LIBS = -L/usr/local/lib -lz”。这让我得到了一个干净的编译。运行“make install”来安装这个东西,它在运行时失败了。2) 修复方法是 cd 到 /usr/local/lib 并从命令行运行“ldconfig”。“ldconfig”更新动态链接器运行时绑定(详细信息请阅读“man”页面。)您可以通过在 X-windows 的命令行中运行“display”来确认 ImageMagick 安装正常。(如果您安装了 ImageMagick 以便“显示”prgm 工作,

于 2018-09-24T15:10:22.607 回答