#makefile #glpk
Вопрос:
Я пытаюсь использовать программу с открытым исходным кодом под названием PumpKin, которая является решателем кинетики плазмы.
Он работает с файлом Makefile, и в файле Makefile используются g и GLPK. Поэтому я установил g через MinGW, скачал GLPK для Windows, распаковал его и поместил на диск C. g не был проблемой. Переменная среды также была добавлена в путь, как показано ниже:
C:MinGWbin
C:glpk-5.0w64
Ниже приведен весь код файла Makefile.
OBJ = PumpKin.o pk_IO.o pk_Array.o pk_Pathways.o pk_Print.o #Auxiliary.o Tests.o Print.o Pathways.o Optimize.o OptimizeDifferent.o #CFLAGS = -std=gnu 0x -g DFLAGS = -DCOMPILING_HOSTNAME="$(HOSTNAME)" INCLUDE_DIRS = -I/opt/local/include -I$(HOME)/include #LFLAGS = -stdlib=libc LIBS = -L/opt/local/lib -lglpk -lm #LIBS = = -L/usr/local/NLopt/lib -lnlopt -lm CC = g LINK = g all: pumpkin %.o: %.cpp $(CC) $(CFLAGS) $(DFLAGS) $(INCLUDE_DIRS) -O3 -o $@ -c
lt;
# $(CC) $(CFLAGS) $(DFLAGS) $(INCLUDE_DIRS) -g -o $@ -clt;
%.o: %.cc
$(CC) $(CFLAGS) $(DFLAGS) $(INCLUDE_DIRS) -g -o $@ -clt;
pumpkin: $(OBJ)
$(LINK) $(LFLAGS) -std=gnu 0x $(OBJ) -o $@ $(LIBS)clean:
rm *.o *.*~ pumpkin 2> /dev/null
Но когда я набираю «сделать» в приглашении, оно возвращает ошибку с надписью «не удается найти-lglpk».D:workfilespumpkin-1.5src>make g -std=gnu 0x PumpKin.o pk_IO.o pk_Array.o pk_Pathways.o pk_Print.o -o pumpkin -L/opt/local/lib -lglpk -lm c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: cannot find -lglpk collect2.exe: error: ld returned 1 exit status
Я предполагаю, что это потому, что каталог GLPK неправильно направлен, но я не уверен.
Я очень новичок в программировании Makefile, и на самом деле я не понимаю ни одной команды в этом файле Makefile.
Я изучаю это, но мне интересно, является ли это простой проблемой, чтобы кто-то мог решить ее с первого взгляда.
Спасибо вам за ваши ответы.
Комментарии:
1. Ваша проблема заключается не в » программировании файлов», а в проблеме компиляции и связывания. Вы » поместили его на диск C «: ХОРОШО, но следующий вопрос-где? Ваш файл Makefile сообщает
g
, что библиотека GLPK/opt/local/lib
включена . Действительно ли это/opt/local/lib
здесь ? Если это не так, поместили ли вы его в одно из других стандартных мест для библиотек (/usr/lib
например)?2. Пожалуйста, не используйте изображения для отображения только текста. Скопируйте, вставьте текст и отформатируйте его должным образом.
3. @RenaudPacalet Спасибо. Я удалил изображение. И я имел в виду буквально диск C, так что каталог «C:glpk-5.0w64» Могу ли я использовать как ‘LIBS = C:glpk-5.0w64 -lglpk -lm’? На самом деле я пытался, но он возвращает дополнительные ошибки, говоря ‘c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: не удается найти C:glpk-5.0w64: В разрешении отказано’
4. Да, вот и все,
g
не знает, где найти библиотеку GLPK, потому что она находится не в стандартном месте и не в/opt/local/lib
том, что ваш файл Makefile добавляет в эти стандартные места. Я совсем не знаком с Windows и всеми этими средами, которые пытаются имитировать GNU/Linux под Windows, но вы могли бы попробоватьLIBS = -Lc:/glpk-5.0/w64 -L/opt/local/lib -lglpk -lm
.