我正在尝试安装一个程序(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文件)。
此外,通过搜索与此程序相关的其他论坛(here),似乎我可能需要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的位置,安装中的错误,还是其他完全超出我头脑的问题。任何建议将不胜感激。谢谢。
答案 0 :(得分:1)
在我的系统(Ubuntu 12.04.3 LTS)上,这是一个lib位置问题 确保已安装zlib1g-dev 在vcftools_whatever / cpp / Makefile中,更改
LIB = -lz
到
LIB = -L/usr/local/lib/ -lz
答案 1 :(得分:0)
该区域的obuntu中存在一个错误,在声明库路径后,必须出现特定库的声明。
在您的makefile中,-lz
只能在 -L/usr/local/lib/
之后放置
我建议将LIB声明更改为下面的声明 - 这应该可以解决问题
LIB = -I/usr/local/include/ -L/usr/local/lib/ -lz
答案 2 :(得分: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以便“显示”程序可以工作,Python及其各种图形/图像生成工具将自动使用它,从而允许渲染和检查超出屏幕尺寸的复杂图像。)
答案 3 :(得分:0)
我想你错过了开发包。并非您尝试过的那样称为zlib-devel,
sudo apt-get install zlib-devel
但是zlib1g-dev。因此,您要运行的命令是:
sudo apt-get install zlib1g-dev
答案 4 :(得分: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的程序
答案 5 :(得分:0)
对于vcftools不得不修改,配置后:
生成文件
src/Makefile
src/cpp/Makefile
在每个中,转到 LIBS 并输入:
LIBS = -L/tools/hpclib/zlib-1.2.8/lib -lz -lgomp
这是在centos上,zlib编译在上面的特定位置。