免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6099 | 回复: 12
打印 上一主题 下一主题

请问个gcc编译器的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-25 16:46 |只看该作者 |倒序浏览
本人转个模式,在安装过程中出现问题,但是同样在别人的机器上却没有这样的问题,编译过程中需要调用gcc,
我想问下是不是gcc版本不一样,就会造成编译过程的错误

论坛徽章:
0
2 [报告]
发表于 2008-11-25 17:55 |只看该作者
不一定,软件不是都想下兼容的吗

论坛徽章:
0
3 [报告]
发表于 2008-11-25 18:11 |只看该作者
打个电话给上帝,看看他老人家能否听懂您的问题?

论坛徽章:
0
4 [报告]
发表于 2008-11-25 20:57 |只看该作者

论坛徽章:
0
5 [报告]
发表于 2008-11-25 23:37 |只看该作者
configure_kpp, settings:
location of flex library: /usr/lib64/libfl.a

SCC = gcc DM_CC = mpicc -cc=$(SCC) CC = $(SCC) -DFSEEKO64_OK CC_TOOLS = $(SCC) CC="$(SCC)" CFLAGS="$(CFLAGS)" \
writing chem/KPP/configure.kpp
/home/zcm/WRF/WRFV3
-----------------------------------------
compile kpp
make[1]: Entering directory `/home/zcm/WRF/WRFV3/chem/KPP/kpp/kpp-2.1/src'
  yacc -d scan.y
  gcc -O -c y.tab.c
  flex scan.l
  gcc -O -c lex.yy.c
scan.l:80: 错误:‘INC_STATE’ 未声明 (不在函数内)
scan.l:81: 错误:‘MOD_STATE’ 未声明 (不在函数内)
scan.l:82: 错误:‘INT_STATE’ 未声明 (不在函数内)
scan.l:83: 错误:‘PRM_STATE’ 未声明 (不在函数内)  
……  ……

scan.l:348: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
scan.l:348: 错误:所在的函数内只报告一次。)
scan.l:348: 警告:从不兼容的指针类型赋值
scan.l: 在函数 ‘EndInclude’ 中:
scan.l:372: 错误:‘yy_current_buffer’ 未声明 (在此函数内第一次使用)
scan.l:372: 警告:从不兼容的指针类型赋值
make[1]: *** [lex.yy.o] 错误 1
make[1]: Leaving directory `/home/zcm/WRF/WRFV3/chem/KPP/kpp/kpp-2.1/src'

sorry,说得不清楚,贴个错误提示出来,compile时候出现的错误

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
6 [报告]
发表于 2008-11-26 00:22 |只看该作者
把scan.l和scan.y贴一下

论坛徽章:
0
7 [报告]
发表于 2008-11-26 10:06 |只看该作者
把我的scan.l 、scan.h 、scan.y都发上来,谢谢帮忙

scan.tar

40 KB, 下载次数: 36

论坛徽章:
0
8 [报告]
发表于 2008-11-26 11:24 |只看该作者
弱问一下,lz在干啥?

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
9 [报告]
发表于 2008-11-26 11:55 |只看该作者
这个gdata.h在哪里?

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
10 [报告]
发表于 2008-11-26 13:32 |只看该作者
我知道了,是在于不同LEX编译器的差别问题.
里面的宏在哪里define的问题,我帮你把scan.l改了一下,你再试下.

  1. /******************************************************************************

  2.   KPP - The Kinetic PreProcessor
  3.         Builds simulation code for chemical kinetic systems

  4.   Copyright (C) 1995-1996 Valeriu Damian and Adrian Sandu
  5.   Copyright (C) 1997-2005 Adrian Sandu

  6.   KPP is free software; you can redistribute it and/or modify it under the
  7.   terms of the GNU General Public License as published by the Free Software
  8.   Foundation ([url]http://www.gnu.org/copyleft/gpl.html[/url]); either version 2 of the
  9.   License, or (at your option) any later version.

  10.   KPP is distributed in the hope that it will be useful, but WITHOUT ANY
  11.   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  12.   FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
  13.   details.

  14.   You should have received a copy of the GNU General Public License along
  15.   with this program; if not, consult [url]http://www.gnu.org/copyleft/gpl.html[/url] or
  16.   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  17.   Boston, MA  02111-1307,  USA.

  18.   Adrian Sandu
  19.   Computer Science Department
  20.   Virginia Polytechnic Institute and State University
  21.   Blacksburg, VA 24060
  22.   E-mail: [email]sandu@cs.vt.edu[/email]

  23. ******************************************************************************/



  24. %s CMD_STATE INC_STATE MOD_STATE INT_STATE
  25. %s PRM_STATE DSP_STATE SSP_STATE INI_STATE EQN_STATE EQNTAG_STATE
  26. %s RATE_STATE LMP_STATE CR_IGNORE SC_IGNORE ATM_STATE LKT_STATE INL_STATE
  27. %s MNI_STATE TPT_STATE USE_STATE
  28. %s COMMENT COMMENT2 EQN_ID
  29. %x INL_CODE

  30. %{
  31.   #include "gdata.h"
  32.   #include "scan.h"
  33.   #include "y.tab.h"

  34.   void*malloc() ;
  35.   void Include ( char * filename );
  36.   int EndInclude();

  37.   int crt_line_no = 1;
  38.   char *crt_filename;

  39.   #define MAX_INCLUDE 10
  40.   
  41.   YY_BUFFER_STATE yy_buffers[ MAX_INCLUDE ];
  42.   int yy_line_no[ MAX_INCLUDE ];
  43.   char *yy_filename[ MAX_INCLUDE ];
  44.   int yy_buf_level = 0;
  45.   
  46.   char crtToken[100];
  47.   char nextToken[100];
  48.   int crtTokType;
  49.   int nextTokType;
  50.   int crtLine;
  51.   char crtFile[MAX_PATH];
  52.   char crt_rate[100];

  53.   int oldnErr = 0;

  54.   int idx;
  55.   int oldstate;
  56.   extern int yyerrflag;

  57.   typedef struct {
  58.                    char *name;
  59.                    int next;
  60.                    int cmd;
  61.                  } KEYWORD;


  62.   KEYWORD keywords[] ;
  63.   int CheckKeyword( char *cmd );

  64. #define RETURN( x ) \
  65.         if(1) { \
  66.           if ( yyerrflag == 0) { \
  67.             strcpy( crtToken, nextToken ); \
  68.             crtTokType = nextTokType; \
  69.             crtLine = crt_line_no; \
  70.             strcpy( crtFile, crt_filename ); \
  71.           } \
  72.           strcpy( nextToken, yytext); \
  73.           nextTokType = x; \
  74.           return (x); \
  75.         }
  76. %}


  77. BT            [ \t]
  78. SPACE         [ \t]
  79. CR      [\n]
  80. TAG     [a-zA-Z_0-9]+
  81. STRING         [^ \t\n{}#;]+

  82. LIT           [a-zA-Z_]
  83. CIF           [0-9]

  84. IDSPC   {LIT}[a-zA-Z_0-9]*

  85. NR          {CIF}*
  86. NRS         [+-]?{CIF}+
  87. REAL          {NRS}?"."?{NR}
  88. UREAL          {NR}?"."?{NR}
  89. FLOAT   {REAL}([eE]{NRS})?
  90. UFLOAT  {UREAL}([eE]{NRS})?

  91. %%
  92. {SPACE}+                {
  93.                         }  
  94. #                        { BEGIN CMD_STATE;
  95.                         }
  96. \{                      { oldstate = (yy_start - 1) / 2;
  97.                           BEGIN COMMENT;
  98.                         }
  99. \/\/                    { oldstate = (yy_start - 1) / 2;
  100.                           BEGIN COMMENT2;
  101.                         }
  102. <COMMENT>[^\}\n]*       {
  103.                         }
  104. <COMMENT>\}             { BEGIN oldstate;
  105.                         }   
  106. <COMMENT2>[^\n]*        {
  107.                         }
  108. <COMMENT2>{CR}          { crt_line_no++;
  109.                           BEGIN oldstate;
  110.                         }   
  111. {CR}                        { crt_line_no++;
  112.                         }
  113. <CMD_STATE>{STRING}     { idx = CheckKeyword( yytext );
  114.                           if ( idx < 0 ) {
  115.                             BEGIN CR_IGNORE;
  116.                             break;
  117.                           }
  118.                           BEGIN keywords[idx].next;
  119.                           if ( keywords[idx].cmd ) {
  120.                             crt_section = keywords[idx].cmd;
  121.                             RETURN( keywords[idx].cmd );
  122.                           }
  123.                         }
  124. <INC_STATE>{STRING}     { Include( IncName(yytext) );
  125.                           BEGIN CR_IGNORE;
  126.                         }
  127. <MOD_STATE>{STRING}     { Include( ModelName(yytext) );
  128.                           BEGIN CR_IGNORE;
  129.                         }
  130. <INT_STATE>{STRING}     { Include( IntegName(yytext) );
  131.                           BEGIN CR_IGNORE;
  132.                         }
  133. <PRM_STATE>{STRING}     { strcpy( yylval.str, yytext );
  134.                           BEGIN CR_IGNORE;                        
  135.                           RETURN( PARAMETER );
  136.                         }
  137. <CR_IGNORE>{STRING}     { ScanError("Extra parameter on command line '%s'", yytext);
  138.                         }
  139. <ATM_STATE>{IDSPC}      { strcpy( yylval.str, yytext );
  140.                           RETURN( ATOMID );
  141.                         }
  142. <ATM_STATE>;            { RETURN( yytext[0] );
  143.                         }
  144. <DSP_STATE>{IDSPC}      { strcpy( yylval.str, yytext );
  145.                           RETURN( SPCSPC );
  146.                         }
  147. <DSP_STATE>{NR}         { strcpy( yylval.str, yytext );
  148.                           RETURN( SPCNR );
  149.                         }
  150. <DSP_STATE>[=]          { RETURN( SPCEQUAL );
  151.                         }
  152. <DSP_STATE>[+]          { RETURN( SPCPLUS );
  153.                         }
  154. <DSP_STATE>;            { RETURN( yytext[0] );
  155.                         }
  156. <DSP_STATE>[^;#]        { ScanError("Invalid character '%c' in species definition", yytext[0] );
  157.                         }
  158. <SSP_STATE>{IDSPC}      { strcpy( yylval.str, yytext );
  159.                           RETURN( SSPID );
  160.                         }
  161. <SSP_STATE>;            { RETURN( yytext[0] );
  162.                         }
  163. <INI_STATE>{IDSPC}      { strcpy( yylval.str, yytext );
  164.                           RETURN( INISPC );
  165.                         }
  166. <INI_STATE>[=]          { RETURN( INIEQUAL );
  167.                         }
  168. <INI_STATE>;            { RETURN( yytext[0] );
  169.                         }
  170. <INI_STATE>{FLOAT}      { strcpy( yylval.str, yytext );
  171.                           RETURN( INIVALUE );
  172.                         }
  173. <INI_STATE>[^=;#]       { ScanError("Invalid character '%c' in initial values", yytext[0] );
  174.                         }
  175. <EQN_STATE>{IDSPC}      { strcpy( yylval.str, yytext );
  176.                           RETURN( EQNSPC );
  177.                         }
  178. <EQN_STATE>[=]          { RETURN( EQNEQUAL );
  179.                         }
  180. <EQN_STATE>{UFLOAT}     { strcpy( yylval.str, yytext );
  181.                           RETURN( EQNCOEF );
  182.                         }
  183. <EQN_STATE>[:]          { BEGIN RATE_STATE;
  184.                           *crt_rate = 0;
  185.                           RETURN( EQNCOLON );
  186.                         }
  187. <EQN_STATE>[+-]         { strcpy( yylval.str, yytext );
  188.                           RETURN( EQNSIGN );
  189.                         }
  190. <EQN_STATE>[<]          { BEGIN EQNTAG_STATE;
  191.                           RETURN( EQNLESS );
  192.                         }
  193. <EQNTAG_STATE>{TAG}     { strcpy( yylval.str, yytext );
  194.                           RETURN( EQNTAG );
  195.                         }
  196. <EQNTAG_STATE>[>]       { BEGIN EQN_STATE;
  197.                           RETURN( EQNGREATER );
  198.                         }   
  199. <RATE_STATE>{STRING}    { strcpy( yylval.str, yytext );
  200.                           RETURN( RATE );
  201.                         }
  202. <RATE_STATE>;           { BEGIN EQN_STATE;
  203.                           RETURN( yytext[0] );
  204.                         }
  205. <LMP_STATE>{IDSPC}      { strcpy( yylval.str, yytext );
  206.                           RETURN( LMPSPC );
  207.                         }
  208. <LMP_STATE>[+]          { RETURN( LMPPLUS );
  209.                         }
  210. <LMP_STATE>[:]          { RETURN( LMPCOLON );
  211.                         }
  212. <LMP_STATE>;            { RETURN( yytext[0] );
  213.                         }
  214. <LMP_STATE>[^;#]        { ScanError("Invalid character '%c' in species definition", yytext[0] );
  215.                         }
  216. <LKT_STATE>{IDSPC}      { strcpy( yylval.str, yytext );
  217.                           RETURN( LKTID );
  218.                         }
  219. <LKT_STATE>;            { RETURN( yytext[0] );
  220.                         }
  221. <TPT_STATE>{IDSPC}      { strcpy( yylval.str, yytext );
  222.                           RETURN( TPTID );
  223.                         }
  224. <TPT_STATE>;            { RETURN( yytext[0] );
  225.                         }
  226. <USE_STATE>{STRING}     { strcpy( yylval.str, yytext );
  227.                           RETURN( USEID );
  228.                         }
  229. <USE_STATE>;            { RETURN( yytext[0] );
  230.                         }
  231. <MNI_STATE>{IDSPC}      { strcpy( yylval.str, yytext );
  232.                           RETURN( MNIID );
  233.                         }
  234. <MNI_STATE>;            { RETURN( yytext[0] );
  235.                         }
  236. <INL_STATE>{STRING}        { strcpy( yylval.str, yytext );
  237.                           BEGIN INL_CODE;
  238.                           RETURN( INLCTX );
  239.                         }
  240. <INL_CODE>#[^ \t\n]*    { if ( EqNoCase( yytext+1, "ENDINLINE" ) ){
  241.                             BEGIN INITIAL;
  242.                             RETURN( ENDINLINE );
  243.                           }
  244.                           else {
  245.                             strcpy( yylval.str, yytext );
  246.                             RETURN( INCODE );
  247.                           }
  248.                         }
  249. <INL_CODE>\n                { crt_line_no++;
  250.                           strcpy( yylval.str,yytext );
  251.                           RETURN( INCODE );
  252.                         }
  253. <INL_CODE>[^#\n]*        { strcpy( yylval.str,yytext );
  254.                           RETURN( INCODE );
  255.                         }
  256. <<EOF>>                        { if ( ! EndInclude() ) {
  257.                             RETURN( INITIAL );
  258.                           }
  259.                         }  
  260. %%

  261.   KEYWORD keywords[] = { { "INCLUDE",    INC_STATE, 0 },
  262.                          { "MODEL",      MOD_STATE, 0 },
  263.                          { "INTEGRATOR", INT_STATE, 0 },
  264.                          { "JACOBIAN",   PRM_STATE, JACOBIAN },
  265.                          { "HESSIAN",    PRM_STATE, HESSIAN },
  266.                          { "STOICMAT",   PRM_STATE, STOICMAT },
  267.                          { "STOCHASTIC", PRM_STATE, STOCHASTIC },
  268.                          { "DOUBLE",     PRM_STATE, DOUBLE },
  269.                          { "REORDER",    PRM_STATE, REORDER },
  270.                          { "MEX",        PRM_STATE, MEX },
  271.                          { "DUMMYINDEX", PRM_STATE, DUMMYINDEX},
  272.                          { "EQNTAGS",    PRM_STATE, EQNTAGS},
  273.                          { "FUNCTION",   PRM_STATE, FUNCTION },
  274.                          { "ATOMS",      ATM_STATE, ATOMDECL },   
  275.                          { "CHECK",      ATM_STATE, CHECK },
  276.                          { "CHECKALL",   INITIAL,   CHECKALL },
  277.                          { "DEFVAR",     DSP_STATE, DEFVAR },
  278.                          { "DEFRAD",     DSP_STATE, DEFRAD },
  279.                          { "DEFFIX",     DSP_STATE, DEFFIX },
  280.                          { "SETVAR",     SSP_STATE, SETVAR },
  281.                          { "SETRAD",     SSP_STATE, SETRAD },
  282.                          { "SETFIX",     SSP_STATE, SETFIX },
  283.                          { "INITVALUES", INI_STATE, INITVALUES },
  284.                          { "EQUATIONS",  EQN_STATE, EQUATIONS },
  285.                          { "LUMP",       LMP_STATE, LUMP },
  286.                          { "LOOKAT",          LKT_STATE, LOOKAT },
  287.                          { "LOOKATALL",  INITIAL,   LOOKATALL },
  288.                          { "TRANSPORT",  TPT_STATE, TRANSPORT },
  289.                          { "TRANSPORTALL", INITIAL,   TRANSPORTALL },
  290.                          { "INITIALIZE", PRM_STATE, INITIALIZE },
  291.                          { "XGRID",           PRM_STATE, XGRID },
  292.                          { "YGRID",           PRM_STATE, YGRID },
  293.                          { "ZGRID",           PRM_STATE, ZGRID },
  294.                          { "MONITOR",          MNI_STATE, MONITOR },
  295.                          { "WRITE_ATM",  INITIAL,   WRITE_ATM },
  296.                          { "WRITE_SPC",  INITIAL,   WRITE_SPC },
  297.                          { "WRITE_MAT",  INITIAL,   WRITE_MAT },
  298.                          { "WRITE_OPT",  INITIAL,   WRITE_OPT },
  299.                          { "USE",        PRM_STATE, USE },
  300.                          { "LANGUAGE",   PRM_STATE, LANGUAGE },
  301.                          { "INLINE",     INL_STATE, INLINE },
  302.                          { "ENDINLINE",  INITIAL,   ENDINLINE },
  303.                          { "INTFILE",    PRM_STATE, INTFILE },
  304.                          { "DRIVER",     PRM_STATE, DRIVER },
  305.                          { "RUN",        PRM_STATE, RUN },
  306.                          { "USES",       USE_STATE, USES },
  307.                          { "SPARSEDATA", PRM_STATE, SPARSEDATA },
  308.                          { "WRFCONFORM",   INITIAL,   WRFCONFORM },
  309.                          { 0, 0, 0 }
  310.                        };
  311. void Include ( char * name )
  312. {
  313. FILE *f;
  314. YY_BUFFER_STATE newb;

  315.   if ( yy_buf_level == MAX_INCLUDE ) {
  316.     printf("\nInclude nested too deep. Include %s ignored", name);
  317.     return;
  318.   }

  319.   yy_buffers[ yy_buf_level ]  = yy_current_buffer;
  320.   yy_line_no[ yy_buf_level ]  = crt_line_no;
  321.   yy_filename[ yy_buf_level ] = crt_filename;
  322.   yy_buf_level++;
  323.   
  324.   crt_line_no = 1;  

  325.   crt_filename = (char *) malloc( 1 + strlen( name ) );
  326.   strcpy( crt_filename, name );

  327.   f = fopen( name, "r" );
  328.   if( f == NULL )
  329.     FatalError(3,"%s: Can't read file", name );

  330.   newb = yy_create_buffer(f, YY_BUF_SIZE);
  331.   yy_switch_to_buffer( newb );
  332. }

  333. int EndInclude()
  334. {
  335. YY_BUFFER_STATE oldb;
  336. char * oldn;

  337.   if ( yy_buf_level > 0 ) {
  338.     oldb = yy_current_buffer;
  339.     oldn = crt_filename;
  340.     yy_buf_level--;
  341.     yy_switch_to_buffer( yy_buffers[yy_buf_level] );
  342.     crt_line_no = yy_line_no[ yy_buf_level ];
  343.     crt_filename = yy_filename[ yy_buf_level ];
  344.     yy_delete_buffer( oldb );
  345.     free( oldn );
  346.     return 1;
  347.   }
  348.   return 0;
  349. }

  350. int EqNoCase( char *s1, char *s2 )
  351. {
  352.   while( *s1 ) {
  353.     if ( toupper(*s1++) != toupper(*s2++) ) return 0;
  354.   }
  355.   return *s1 == *s2;
  356. }

  357. int CheckKeyword( char *cmd )
  358. {
  359. int i;

  360.   i = 0;
  361.   while( 1 ) {
  362.     if( keywords[i].name == 0 ) {
  363.       ScanError( "'%s': Unknown command (ignored)", cmd);
  364.       return -1;
  365.     }
  366.     if( EqNoCase( cmd, keywords[i].name ) ) {
  367.       return i;
  368.     }
  369.     i++;
  370.   }
  371. }


复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP