Пакет CUDD: проблемы компиляции и makefile
Я пытаюсь запустить простую программу, чтобы узнать, как использовать пакет CUDD версии 3.0.0. Я скачал пакет и установил его: ( 1- ./configure 2- make 3- make check).
Я создал следующую простую программу:
#include <stdio.h>
#include "cudd.h"
#include "util.h"
int main (int argc, char *argv[])
{
printf("Its working");
DdManager *gbm; /* Global BDD manager. */
char filename[30];
gbm = Cudd_Init(0,0,CUDD_UNIQUE_SLOTS,CUDD_CACHE_SLOTS,0);
DdNode *bdd = Cudd_bddNewVar(gbm);
Cudd_Ref(bdd);
Cudd_Quit(gbm);
return 0;
}
Я хотел бы создать make-файл для его компиляции. Как я могу это сделать? Более того, если я хочу скомпилировать его через командную строку, как я могу связать его библиотеки?
1 ответ
В версии 3 CUDD подверглась серьезной переработке своей системы сборки, поэтому более старые HOWTO для компиляции программ, использующих CUDD, больше не применяются.
Чтобы упростить процесс сборки, я обычно рекомендую выполнять статическую сборку с использованием CUDD - это позволяет запускать скомпилированную программу позже, не указывая пути к библиотеке CUDD и / или не устанавливая библиотеку CUDD в "/usr/lib".
Для этого сначала перекомпилируйте cudd:
./configure --enable-dddmp --enable-obj --enable-shared --enable-static; make
Это гарантирует, что статическая библиотека собирается вместе с дополнительными компонентами CUDD, которые вам могут понадобиться позже.
Затем вы можете скомпилировать пример программы из командной строки следующим образом:
gcc test.c -o testprogram -I /path/to/cudd-3.0.0/cudd -I /path/to/cudd-3.0.0/util -I /path/to/cudd-3.0.0/ -static -L /path/to/cudd-3.0.0/cudd/.libs/ -lcudd -lm
Существуют и другие способы компиляции с использованием CUDD, но я лично не большой поклонник глобальных установок библиотек. Если вы начнете использовать больше возможностей CUDD, вам может потребоваться добавить дополнительные каталоги include для компилятора, чтобы найти файлы CUDD .h, и может потребоваться больше библиотек. Обратите внимание, что все параметры, начинающиеся с "-static", являются параметрами компоновщика в приведенной выше команде компиляции, в то время как остальные параметры относятся к компилятору - это важно знать, когда вы начинаете писать Makefiles для автоматизации вашего процесса сборки. Образец Makefile выглядит следующим образом:
CFLAGS = -I /path/to/cudd-3.0.0/cudd -I /path/to/cudd-3.0.0/util -I /path/to/cudd-3.0.0/
LFLAGS = -static -L /path/to/cudd-3.0.0/cudd/.libs/ -lcudd -lm
default: testprogram
testprogram: test.o
$(CC) test.o -o testprogram $(LFLAGS)
test.o: test.c
$(CC) test.c -c -o test.o $(CFLAGS)
Пожалуйста, ознакомьтесь с более полной документацией о том, как писать Makefiles или использовать альтернативную систему сборки. Обратите внимание, что в приведенном выше файле "четыре пробела в строке" должны быть вкладками, чтобы Makefile работал. Если вы храните его в том же каталоге, что и "test.c" под именем "Makefile", запуск "make" должен собрать программу.