Как вызвать/связать GLPK для Windows в файле Makefile? [не удается найти-lglpk]

#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 $@ -c


lt;

%.o: %.cc
$(CC) $(CFLAGS) $(DFLAGS) $(INCLUDE_DIRS) -g -o $@ -c


lt;

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 .