2017-03-08 5 views
0

간단한 프로그램을 실행하여 CUDD 패키지 버전 3.0.0을 사용하는 방법을 배우려고합니다. 나는 패키지를 다운로드하고 설치했다 : (1- ./configure 2- make 3- make check). CUDD 패키지 : 문제점 컴파일 및 메이크 파일

나는 다음과 같은 간단한 프로그램을 만들어 :

#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; 
    } 

내가 그것을 어떻게 할 수있는, 컴파일하는 메이크 파일을 만들시겠습니까? 또한 명령 줄을 통해 컴파일하려면 라이브러리를 어떻게 링크 할 수 있습니까?

+0

[정의되지 않은 참조/확인되지 않은 외부 기호 오류 란 무엇이며 어떻게 수정합니까?] (http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved- 외부 기호 오류 및 방법 -i-fix) – Olaf

답변

1

버전 3에서 CUDD는 빌드 시스템을 크게 개선 했으므로 CUDD를 사용하는 프로그램을 컴파일하는 이전 HOWTO는 더 이상 적용 할 수 없습니다.

빌드 프로세스를 단순화하기 위해, 나는 일반적으로 정적으로 CUDD 에 구축하는 것이 좋습니다 -이 당신 "은/usr에 CUDD 라이브러리를 CUDD 라이브러리에 경로를 제공 및/또는 설치하지 않고 나중에 컴파일 된 프로그램을 실행할 수 있습니다/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 파일을 찾기 위해 컴파일러를위한 추가 디렉토리를 추가해야 할 수 있으며 더 많은 라이브러리가 필요할 수 있습니다. "-static"로 시작하는 모든 매개 변수는 위의 컴파일 명령에서 링커 매개 변수이며 나머지는 컴파일러 용입니다. 빌드 프로세스를 자동화하기 위해 Makefile 작성을 시작할 때 알아 두어야 할 중요합니다. 샘플 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) 

Makefile을 작성하거나 다른 빌드 시스템을 사용하는 방법에 대한보다 포괄적 인 문서를 참조하십시오. 위의 파일에서 Makefile이 작동하려면 "한 줄에 4 개의 공백"이 탭이되어야합니다. "test.c"와 같은 디렉토리에 "Makefile"이라는 이름으로 저장하면 "make"를 실행하면 프로그램을 빌드해야합니다.

+0

답장을 보내 주셔서 감사합니다. 불행히도 나는 다시 오류가 있습니다 : "ld : -lcrt0.o에 대해 라이브러리를 찾을 수 없습니다",이 문제를 해결할 수 있습니까? – kafka

+1

"-static"을 삭제하려고 시도했는데 작동하는 것 같습니다. – kafka