#c #linux #makefile #zlib
Вопрос:
Есть довольно много сообщений об этой ошибке, но я не смог ее решить, надеюсь, вы сможете найти решение. Я нахожусь на компьютере с Ubuntu.
~/graphmap2$
В этой папке я скачал zlib. Вы можете увидеть картинку
После некоторого поиска в Google я также заметил, что -lz
параметра нет, поэтому я также добавил его вручную, как вы можете видеть ниже
Однако я все равно получаю ту же ошибку, что и тогда, когда ничего из вышеперечисленного сделано не было.
Может быть, путь к zlib не ясен для компилятора? Однако я установил его в эту же папку.
Файл make выглядит следующим образом:
BIN = ./bin/graphmap2 BIN_DEBUG = ./bin/graphmap-debug BIN_LINUX = ./bin/Linux-x64/graphmap2 BIN_MAC = ./bin/Mac/graphmap OBJ_TESTING = ./obj_test OBJ_TESTING_EXT = ./obj_testext OBJ_DEBUG = ./obj_debug OBJ_LINUX = ./obj_linux OBJ_EXTCIGAR = ./obj_extcigar OBJ_MAC = ./obj_mac SOURCE = src CODEBASE = codebase # This finds all 'src' folders at maximum depth 2 (level one inside each submodule's folder). CODEBASE_SRC_FOLDERS = $(shell find $(CODEBASE) -maxdepth 2 -type d -name "src" -exec echo "-I"{} ;) # $(shell find $(CODEBASE) -maxdepth 3 -type d -name "libs" -exec echo "-I"{} ;) # $(shell find $(CODEBASE) -maxdepth 2 -type d -name "src" -exec echo "-I"{}"/*/" ;) # ? allows override by user using env var GCC ?= g # define variables for GCC version check here GCC_MAJOR_VERSION_GE_4 := $(shell expr `$(GCC) -dumpversion | cut -f1 -d.` >= 4) GCC_MINOR_VERSION_GE_7 := $(shell expr `$(GCC) -dumpversion | cut -f2 -d.` >= 7) GCC_MAC ?= g # CPP_FILES := $(wildcard $(SOURCE)/*/*.cpp) $(wildcard $(SOURCE)/*.cpp) $(wildcard $(SOURCE)/libs/*/*.cpp) # CC_FILES := $(wildcard $(SOURCE)/*/*.cc) $(wildcard $(SOURCE)/*.cc) $(wildcard $(SOURCE)/libs/*/*.cc) # H_FILES := $(wildcard $(SOURCE)/*/*.h) $(wildcard $(SOURCE)/*.h) $(wildcard $(SOURCE)/libs/*/*.h) CPP_FILES := $(wildcard $(CODEBASE)/*/src/*.cpp) $(wildcard $(CODEBASE)/*/src/libs/*/*.cpp) $(wildcard $(CODEBASE)/*/src/*/*.cpp) $(wildcard $(SOURCE)/*/*.cpp) $(wildcard $(SOURCE)/*.cpp) $(wildcard $(SOURCE)/libs/*/*.cpp) CC_FILES := $(wildcard $(CODEBASE)/*/src/*.cc) $(wildcard $(CODEBASE)/*/src/libs/*/*.cc) $(wildcard $(CODEBASE)/*/src/*/*.cc) $(wildcard $(SOURCE)/*/*.cc) $(wildcard $(SOURCE)/*.cc) $(wildcard $(SOURCE)/libs/*/*.cc) H_FILES := $(wildcard $(CODEBASE)/*/src/*.h) $(wildcard $(CODEBASE)/*/src/libs/*/*.h) $(wildcard $(CODEBASE)/*/src/*/*.h) $(wildcard $(SOURCE)/*/*.h) $(wildcard $(SOURCE)/*.h) $(wildcard $(CODEBASE)/*/src/*.hpp) $(wildcard $(CODEBASE)/*$ OBJ_FILES := $(CPP_FILES:.cpp=.o) $(CC_FILES:.cc=.o) OBJ_FILES_FOLDER_TESTING := $(addprefix $(OBJ_TESTING)/,$(OBJ_FILES)) OBJ_FILES_FOLDER_TESTING_EXT := $(addprefix $(OBJ_TESTING_EXT)/,$(OBJ_FILES)) OBJ_FILES_FOLDER_DEBUG := $(addprefix $(OBJ_DEBUG)/,$(OBJ_FILES)) OBJ_FILES_FOLDER_LINUX := $(addprefix $(OBJ_LINUX)/,$(OBJ_FILES)) OBJ_FILES_FOLDER_EXTCIGAR := $(addprefix $(OBJ_EXTCIGAR)/,$(OBJ_FILES)) OBJ_FILES_FOLDER_MAC := $(addprefix $(OBJ_MAC)/,$(OBJ_FILES)) LIB_DIRS = -L"/usr/local/lib" CC_LIBS = -static-libgcc -static-libstdc -D__cplusplus=201103L # INCLUDE = -I"./src/" -I"/usr/include/" -I"libs/libdivsufsort-2.0.1/build/include" -I"libs/seqan-library-1.4.2/include" # INCLUDE = -I"./src/" -I"/usr/include/" -I"src/libs/seqan-library-1.4.2/include" INCLUDE = -I"./src/" -I"/usr/include/" -I"$(CODEBASE)/seqlib/src/libs/seqan-library-2.0.1/include" -I"$(CODEBASE)/seqlib/src/libs/libdivsufsort-2.0.1-64bit/" $(CODEBASE_SRC_FOLDERS) CC_FLAGS_DEBUG = -O3 -g -rdynamic -c -fmessage-length=0 -ffreestanding -fopenmp -m64 -std=c 11 -Werror=return-type -pthread -march=native -lz CC_FLAGS_RELEASE = -DRELEASE_VERSION -g -O3 -fdata-sections -ffunction-sections -c -fmessage-length=0 -ffreestanding -fopenmp -m64 -std=c 11 -Werror=return-type -pthread -lz # -march=native CC_FLAGS_EXTCIGAR = -DRELEASE_VERSION -DUSE_EXTENDED_CIGAR_FORMAT -g -O3 -fdata-sections -ffunction-sections -c -fmessage-length=0 -ffreestanding -fopenmp -m64 -std=c 11 -Werror=return-type -pthread -march=native -lz CC_FLAGS_NOT_RELEASE = -g -O3 -fdata-sections -ffunction-sections -c -fmessage-length=0 -ffreestanding -fopenmp -m64 -std=c 11 -Werror=return-type -Wuninitialized -pthread -march=native -lz CC_FLAGS_NOT_RELEASE_EXT = -g -O3 -DUSE_EXTENDED_CIGAR_FORMAT -fdata-sections -ffunction-sections -c -fmessage-length=0 -ffreestanding -fopenmp -m64 -std=c 11 -Werror=return-type -Wuninitialized -pthread -march=native -lz LD_FLAGS = -static-libgcc -static-libstdc -m64 -ffreestanding -lz # LD_LIBS = -lpthread -lgomp -lm -lz -ldivsufsort64 LD_LIBS = -lpthread -lgomp -lm -lz all: gcc_version_check linux install: /usr/bin/graphmap /usr/bin/graphmap: bin/Linux-x64/graphmap cp bin/Linux-x64/graphmap /usr/bin/graphmap modules: git submodule update --init --recursive # git submodule foreach git pull origin master testing: $(OBJ_FILES_FOLDER_TESTING) mkdir -p $(dir $(BIN)) $(GCC) $(LD_FLAGS) $(LIB_DIRS) -o $(BIN) $(OBJ_FILES_FOLDER_TESTING) $(LD_LIBS) obj_test/%.o: %.cc $(H_FILES) mkdir -p $(dir $@) $(GCC) $(CC_LIBS) $(INCLUDE) $(CC_FLAGS_NOT_RELEASE) -o $@
lt;
obj_test/%.o: %.cpp $(H_FILES)
mkdir -p $(dir $@)
$(GCC) $(CC_LIBS) $(INCLUDE) $(CC_FLAGS_NOT_RELEASE) -o $@lt;
testingext: $(OBJ_FILES_FOLDER_TESTING_EXT)
mkdir -p $(dir $(BIN)) $(GCC) $(LD_FLAGS) $(LIB_DIRS) -o $(BIN) $(OBJ_FILES_FOLDER_TESTING_EXT) $(LD_LIBS)obj_testext/%.o: %.cc $(H_FILES)
mkdir -p $(dir $@)
$(GCC) $(CC_LIBS) $(INCLUDE) $(CC_FLAGS_NOT_RELEASE_EXT) -o $@lt;
obj_testext/%.o: %.cpp $(H_FILES)
mkdir -p $(dir $@)
$(GCC) $(CC_LIBS) $(INCLUDE) $(CC_FLAGS_NOT_RELEASE_EXT) -o $@lt;
gcc_version_check:
ifneq ($(GCC_MAJOR_VERSION_GE_4), 1)
$(warning "*** WARNING $(GCC) major version <4 ***")
endif
ifneq ($(GCC_MINOR_VERSION_GE_7), 1)
$(warning "*** WARNING $(GCC) minor version <7 ***")
endif
Есть какие-нибудь идеи?
Комментарии:
1. Пожалуйста, не размещайте ссылки на скриншоты или встроенные скриншоты. Пожалуйста, вырежьте и вставьте текст для вызванной вами команды и ошибок, которые вы получили, в свой вопрос (правильно отформатированный). В частности, нам нужно увидеть, как вызывается команда link make, которая выдала ошибки.
Ответ №1:
Похоже, компилятор не может найти файл по указанному вами пути.
Сначала проверьте, доступен ли zconf.h
файл на вашем компьютере, и найдите это местоположение. Если файл доступен, просто укажите путь к файлу компилятору с помощью -I
опции.
INCLUDE = -I"<YourPath>" -I"./src/" -I"/usr/include/" -I"$(CODEBASE)/seqlib/src/libs/seqan-library-2.0.1/include" -I"$(CODEBASE)/seqlib/src/libs/libdivsufsort-2.0.1-64bit/" $(CODEBASE_SRC_FOLDERS)
Если сам файл отсутствует, то вам нужно будет его установить
sudo apt-get install libz-dev
Основываясь на информации, которой поделился @Кнуд Ларсен :
Имя пакета Ubuntu-zlib1g-dev, откуда вы можете получить отсутствующий файл. /usr/включить/zconf.h
https://packages.ubuntu.com/focal-updates/amd64/zlib1g-dev/filelist
Комментарии:
1.Имя пакета Ubuntu-zlib1g-dev. …. Обеспечивает
/usr/include/zconf.h
packages.ubuntu.com/focal-updates/amd64/zlib1g-dev/filelist
Ответ №2:
Просто для справки на будущее, то, что упомянул Альтаф, верно. Более того, вы можете продолжать добавлять вещи, которые находятся не в нужном месте, точно так же, как это. Найдите их, а затем добавьте вручную.
Если файл makefile не очень большой, в конечном итоге все будет в порядке. Однако это не масштабируется в общем случае, и, возможно, следует изменить файл makefile более радикальным способом.