2012-07-31 3 views
11

는 내가 BFD 라이브러리를 사용하려고 해요, 그래서 나는 패키지 binutils-dev을 설치 한 및 포함했다 :binutils/bfd.h는 지금 config.h를 원하십니까?

#include <bfd.h> 

을 내 코드에서 등등 bfd_openrbfd_close과를 호출하고 있습니다.

최근에 업그레이드 한 패키지와 지금 여기에서 오류가 발생합니다 :

bfd.h :

내가 config.h을 포함해야한다는
/* PR 14072: Ensure that config.h is included first. */ 
#if !defined PACKAGE && !defined PACKAGE_VERSION 
#error config.h must be included before this header 
#endif 

... -하지만 autoconf를 사용하지 않는입니다.

잘못된 헤더 파일을 포함하고 있습니까? binutils-dev는 어떻게 사용합니까?

#include <stdio.h> 
#include <bfd.h> 

int main() 
{ 
    bfd_init(); 

    bfd* file = bfd_openr("a.out", 0); 

    if (!file) 
     return -1; 

    if (bfd_check_format(file, bfd_object)) 
     printf("object file\n"); 
    else 
     printf("not object file\n"); 

    bfd_close(file); 

    return 0; 
} 

시도 컴파일하고 다음과 같이 실행 :

$ sudo apt-get install binutils-dev 
$ gcc test.c 
In file included from test.c:3:0: 
/usr/include/bfd.h:37:2: error: #error config.h must be included before this header 
+1

관련 ... stdint.hinttypes.h 확인 처리해야 할 것 14243 – cnicutar

답변

9

음, 같은 패키지에 autotools를 사용하는 것입니다 헤더를 사용하는 가장 올바른 방법을 여기에

는 데모 프로그램입니다 잘. 어떤 사람들은 단순히 완고하고 당신이 그것에 대해 많이 할 수 있다고 생각하지 않습니다. 물론

#define PACKAGE 1 
#define PACKAGE_VERSION 1 

이미 사람들을 정의하는 경우, 당신은뿐만 아니라 같은 몇 가지 합리적인 값으로 설정할 수 있습니다 :

대안은 수표가 사용하는 매크로를 정의하여 주변-작업하는 것입니다 :

#define PACKAGE "your-program-name" 
#define PACKAGE_VERSION "1.2.3" 

귀하의 프로그램에 사용하십시오. 어쨌든 버전을 일관성있게 유지하기 위해 어느 시점에서든 그런 것을 사용할 것입니다.

__STDC__ 매크로가 선언되고 모든 것이 잘 진행되므로 표준 호환 컴파일러를 사용하는 경우이 값이면 충분합니다. 글쎄, 당신이 사용하는 헤더가 더 많은 자동 생성 된 정의를 필요로하지 않는 한. http://sourceware.org/bugzilla/show_bug.cgi?id= : ​​당신이 plugin-api.h을 사용하기를 원한다면

예를 들어, 당신은 실제로

관련 문제