我正在尝试运行一个简单的程序来学习如何使用CUDD软件包版本3.0.0。我下载了软件包并安装了它:(1- ./configure 2-进行3-进行检查)。
我创建了以下简单程序:
#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;
}
我想创建一个将其编译的制作费,我该怎么做?此外,如果我想通过命令行进行编译,我该如何链接其库?
在版本3中,cudd对其构建系统进行了重大改革,因此编译使用CUDD的程序的较旧的Howtos不再适用。
为了简化构建过程,我通常建议使用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的更多功能,则可能必须添加更多包含编译器的目录以查找CUDD .H文件,并且可能需要更多的库。请注意,所有以"静态"开头的参数是上面的编译命令中的链接参数,而其他参数则为编译器 - 这很重要的是要知道何时开始编写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工作。如果将其存储在名称" makefile"中的" test.c"的目录中,则运行" make"应该构建程序。