2010-03-18 5 views
2

.ppc 라이브러리 파일을 gcc가 사용할 수있는 .c 파일로 변환하는 C 프로로 데이터베이스 라이브러리를 컴파일 중입니다. 그러나, 나는이 누락 된 기호는 표준의 체인에서 수있는 다음오라클의 pro * C 컴파일러와 gnu C (__builtin_va_list, __attribute__ 등)

PCC-S-02201, Encountered the symbol 
"__ attribute__ " when expecting one of 
the `following` 

... 

    , Encountered the symbol 
"__builtin_va_list" when expecting one of 
the `following` 

같은 프로 C의 오류를 많이 받고 있어요 STDIO.H 및 stdlib.h 같이 포함되어 있습니다. 이 문제를 어떻게 해결할 수 있습니까?

내가 컴파일하고있는 라이브러리는 이전 솔라리스 시스템에서 가져온 것이며 새로운 솔라리스 10 시스템으로 업그레이드 할 예정이며 헤더 파일에는 이러한 기호가 사용되지 않는 것 같습니다. 예 : 이전 .H 파일

typedef void* va_list 

있는 동안 새로운 .H 파일은 내가 가서 수동으로 그들 모두를 해결하기를 꺼려 해요 이런 것들을 많이 있습니다

typedef __builtin_va_list va_list 

있다 typedef

+0

gcc의 라이브러리 헤더를 pro * C로 컴파일하려고합니까? –

답변

4

$ORACLE_HOME/precomp/admin/pcscfg.cfg ~ PARTIAL의 param을 변경하십시오. 더 긴장된 C 파싱을 사용하므로 Pro * C는 C 구문에 대해 이해하지 못합니다.

+0

감사합니다. –

0

이 전 처리기 지시문을 포함하여이 기능을 구현할 수도 있습니다. 프로 * C는 매크로를 평가하고 그들에게

#ifdef ORA_PROC 
#define __attribute__(x) 
#endif 

내가 집에서 실제로 해요 그리고 그것은 우리의 코드베이스에 정의되어 정확히 확인할 수 없습니다를 대체, 나는 그것을 확인하고 그것을 완성하지만 위처럼됩니다.

업데이트 : 그래서 우리는 우리의 프로젝트에서 사용하는 정확한 코드는 다음과 같습니다 작동하도록 전처리 정의 된 64 개 비트 유형이 할 수없는 알 수없는 이유로

#if defined(ORA_PROC) || !defined(__GNUC__) 
#define __attribute__(x) 
typedef unsigned long long uint64_t; 
typedef   long long int64_t; 
#define INLINE 
#endif 

그래서 내가 직접 정의 할 수 있습니다. 우리 프로젝트는 SPARC 용 Solaris 9에 있으며 GCC 3.3.1 및 GCC 3.4.2로 컴파일하고 Oracle 10g를 사용합니다.

관련 문제