我正在尝试在 cygwin 下为 565 powerPC 编译 matlab 生成的代码。当我执行以下编译命令时:
@powerpc-eabi-gcc -gdwarf-2 -c -mno-sdata -DMODEL=testMacs -DRT -DNUMST=2
-DTID01EQ=1 -DNCSTATES=0 -DRT_STATIC -DMT=0 -I.
-IC:/Programs/MATLAB/R2007b/simulink/include
-IC:/Programs/MATLAB/R2007b/extern/include -IC:/cygwin/gnu/powerpc/extern
2/includes
-IC:/Programs/MATLAB/R2007b/rtw/c/src
-IC:/Programs/MATLAB/R2007b/rtw/c/libsrc
-IC:/cygwin/powerpc-eabi/powerpc-eabi/sys-include
-IC:/macs_565_R14/Driver
-IC:/cygwin/ecos/include
-mcpu=505 -O1 -o ./obj/testMacs.o testMacs.c
我收到以下错误:
In file included from testMacs.h:16:0,
from testMacs.c:11:
C:/cygwin/powerpc-eabi/powerpc-eabi/sys-include/math.h:12:1: error: expected `=', `,', `;', `asm' or `__attribute__' before `union'
C:/cygwin/powerpc-eabi/powerpc-eabi/sys-include/math.h:398:17: error: expected `=', `,', `;', `asm' or `__attribute__' before `const'
In file included from rtwtypes.h:12:0,
from testMacs.h:17,
from testMacs.c:11:
C:/Programs/MATLAB/R2007b/extern/include/tmwtypes.h:83:1: error: expected `=', `,', `;', `asm' or `__attribute__' before `typedef'
math.h rtwtypes.h 是标准的未更改的头文件。
有谁知道我做错了什么或者我错过了编译器选项。
代码片段:testMacs.h:
/*
* testMacs.h
*
* Real-Time Workshop code generation for Simulink model "testMacs.mdl".
*
* Model Version : 1.6
* Real-Time Workshop version : 7.0.1 (R2007b+) 21-Apr-2008
* C source code generated on : Mon Apr 23 06:48:14 2012
*/
#ifndef RTW_HEADER_testMacs_h_
#define RTW_HEADER_testMacs_h_
#ifndef testMacs_COMMON_INCLUDES_
# define testMacs_COMMON_INCLUDES_
#include <stddef.h>
#include <string.h>
#include <math.h> /* line 16*/
#include "rtwtypes.h" /* line 17*/
#include "simstruc.h"
#include "fixedpoint.h"
#include "rt_logging.h"
#include "rt_nonfinite.h"
#endif
数学.h:
/* math.h -- Definitions for the math floating point package. */
#ifndef _MATH_H_
#define _MATH_H_
#include <sys/reent.h>
#include <machine/ieeefp.h>
#include "_ansi.h"
_BEGIN_STD_C
union __dmath /* line 12*/
{
__ULong i[2];
double d;
};
……
/* Global control over fdlibm error handling. */
enum __fdlibm_version
{
__fdlibm_ieee = -1,
__fdlibm_svid,
__fdlibm_xopen,
__fdlibm_posix
};
#define _LIB_VERSION_TYPE enum __fdlibm_version
#define _LIB_VERSION __fdlib_version
extern __IMPORT _CONST _LIB_VERSION_TYPE _LIB_VERSION; /*line 398*/
#define _IEEE_ __fdlibm_ieee
#define _SVID_ __fdlibm_svid
#define _XOPEN_ __fdlibm_xopen
#define _POSIX_ __fdlibm_posix
rtwtypes.h:
/*
* File: rtwtypes.h
*
* Definitions required by Real-Time Workshop generated code.
*
* Real-Time Workshop version: 7.0.1
* Generated on: 2012-04-23 06:48:15
*/
#ifndef __RTWTYPES_H__
#define __RTWTYPES_H__
#include "tmwtypes.h" /* line 12*/
/* This ID is used to detect inclusion of an incompatible rtwtypes.h */
#define RTWTYPES_ID_C08S16I32L32N32F1
#include "simstruc_types.h"
#ifndef POINTER_T
# define POINTER_T
tmwtypes.h:
/*
* The following define is used to emulate when all integer types are
* 32-bits. This is the case for TI C30/C40 DSPs which are RTW targets.
*/
#ifdef DSP32
# define INT8_T int
# define UINT8_T unsigned int
# define INT16_T int
# define UINT16_T unsigned int
#endif
/* line 83*/
/*
* The uchar_T, ushort_T and ulong_T types are needed for compilers which do
* not allow defines to be specified, at the command line, with spaces in them.
*/
typedef unsigned char uchar_T;
typedef unsigned short ushort_T;
typedef unsigned long ulong_T;