首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CUDD包:问题、编译和生成文件

CUDD包:问题、编译和生成文件
EN

Stack Overflow用户
提问于 2017-03-08 17:48:30
回答 1查看 1.2K关注 0票数 1

我正在尝试运行一个简单的程序来学习如何使用CUDD软件包3.0.0版本。我下载了这个包并安装了它:( 1- /configure 2- make3- make )。

我创建了以下简单的程序:

代码语言:javascript
复制
  #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;
   }

我想要创建一个makefile来编译它,我怎么做呢?此外,如果我想通过命令行编译它,我如何链接它的库?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-09 08:29:28

在第3版中,CUDD对其构建系统进行了重大改革,因此用于编译使用CUDD的程序的旧HOWTO不再适用。

为了简化构建过程,我通常建议静态地针对CUDD构建--这允许您在不给出CUDD库的路径和/或将CUDD库安装到"/usr/lib“的情况下运行后期编译的程序。

为此,首先用以下方法重新编译cudd:

代码语言:javascript
复制
 ./configure --enable-dddmp --enable-obj --enable-shared --enable-static; make

这确保构建了静态库,以及您以后可能需要的CUDD的可选组件。

然后,您可以从命令行编译示例程序,如下所示:

代码语言:javascript
复制
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的更多特性,您可能需要为编译器添加更多的包含目录,以查找.h文件,并且可能需要更多的库。请注意,以"-static“开头的所有参数都是上述编译命令中的链接器参数,而其他参数则用于编译器--这一点很重要,您何时开始编写Makefile以自动化构建过程。一个示例Makefile如下所示:

代码语言:javascript
复制
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)

有关如何编写Makefile或使用其他构建系统,请参阅更全面的文档。注意,在上面的文件中,“一行中的四个空格”需要是制表符,这样Makefile才能工作。如果您将其存储在与"test.c“相同的目录中,名为"Makefile",则运行"make”将生成程序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42678383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档