linux下编译出错,求牛人指点!

z253642075 2014-12-26 04:52:42
编译autodock的源代码出错!

错误代码为:

read_parameter_library.cc: 在函数‘void setup_parameter_library(FILE*, int, const char*, Unbound_Model, Linear_FE_Model*)’中:
read_parameter_library.cc:221:39: 错误:‘param_string_4_1’在此作用域中尚未声明
const char *const *param_string = param_string_4_1; // default
^
read_parameter_library.cc:223:22: 错误:‘param_string_4_0’在此作用域中尚未声明
param_string=param_string_4_0;
^
make[1]: *** [autodock4-read_parameter_library.o] 错误 1
make[1]: 离开目录“/root/src/autodock”
make: *** [all] 错误 2
[root@localhost autodock]#


read_parameter_library.cc文件的相关代码为:
// Default parameters
//
// These are set up in "default_parameters.h"
// and stored in the param_string_VERSION_NUM[MAX_LINES] array
// so far we have param_string_4_0 and param_string_4_1
// remember this choice for report_parameter_library()

const char *const *param_string = param_string_4_1; // default
if (unbound_model==Extended) {
param_string=param_string_4_0;
strncpy(parameter_library, "'extended' [AutoDock 4.0 default]", sizeof parameter_library);
}
else if (unbound_model==Unbound_Same_As_Bound) {
param_string=param_string_4_1;
strncpy(parameter_library, "'same as bound' [AutoDock 4.2 default]", sizeof parameter_library);
}
else {
sprintf(msg, "BUG: cannot determine %s parameter values \n",model_text);
stop(msg);
}


while ( param_string[counter] != NULL) {
const char* const s = param_string[counter];
param_keyword = parse_param_line(s);

(void)strcpy(parameter_library_line, param_string[counter]);
counter++;
if (debug > 0) {
pr(logFile, "DEBUG: parameter_library_line = %sDEBUG: param_keyword = %d\n", parameter_library_line, param_keyword);
}

switch (param_keyword) {
case PAR_:
case PAR_NULL:
case PAR_COMMENT:
break;

case PAR_VDW:
process( coeff_vdW, "van der Waals term")
break;

case PAR_HBOND:
process( coeff_hbond, "H-bonding term")
break;

case PAR_ESTAT:
process( coeff_estat, "electrostatic term")
break;

case PAR_DESOLV:
process( coeff_desolv, "desolvation term")
break;

case PAR_TORS:
process( coeff_tors, "torsional term")
break;

case PAR_UNBOUND:
sprintf(msg,
"%s: ERROR: the unbound model cannot be specified in the parameter library file.\nUse the DPF parameter 'unbound_model' instead.\n",
programname);
stop(msg);
break;

case PAR_ATOM_PAR:



怎么解决?求各位牛人帮帮忙,谢谢!
...全文
345 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
z253642075 2015-01-01
  • 打赏
  • 举报
回复
引用 9 楼 makiyd6 的回复:
源代码中应该有一个文件里包含一句:“#define default_parameters.h”,找到这一句,将#去掉。 或者搜索源代码,查找param_string_4_1,找到声明这一句话的地方,将注释的#去掉。
我没找到#define default_parameters.h也没找到#param_string_4_1但在paramdat2h.csh文件里找到这样的内容: #!/bin/csh -f # # $Id: paramdat2h.csh,v 1.10 2011/03/08 04:18:37 mp Exp $ # # AutoDock # # Copyright (C) 1989-2007, Garrett M. Morris, David S. Goodsell, Ruth Huey, Arthur J. Olson, # All Rights Reserved. # # AutoDock is a Trade Mark of The Scripps Research Institute. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. echo 'const char *param_string_4_0[MAX_LINES] = {' egrep -v '^#|^$' $1 | sed 's/\(.*\)$/"\1\\n", /' echo ' };' echo 'const char *param_string_4_1[MAX_LINES] = {' egrep -v '^#|^$' $2 | sed 's/\(.*\)$/"\1\\n", /' echo ' };' echo '// EOF' 怎么弄?哥?
z253642075 2015-01-01
  • 打赏
  • 举报
回复
引用 2 楼 q3733353520 的回复:
这个变量哪里定义的,如果是.h 则需要包含 其他文件则要全局
我在paramdat2h.csh文件里找到这样一句: echo 'const char *param_string_4_0[MAX_LINES] = {' egrep -v '^#|^$' $1 | sed 's/\(.*\)$/"\1\\n", /' echo ' };' echo 'const char *param_string_4_1[MAX_LINES] = {' egrep -v '^#|^$' $2 | sed 's/\(.*\)$/"\1\\n", /' echo ' };' echo '// EOF' 应该是这个文件定义的吧,怎么全局?
makiyd6 2014-12-29
  • 打赏
  • 举报
回复
源代码中应该有一个文件里包含一句:“#define default_parameters.h”,找到这一句,将#去掉。 或者搜索源代码,查找param_string_4_1,找到声明这一句话的地方,将注释的#去掉。
zhxianbin 2014-12-28
  • 打赏
  • 举报
回复
引用 7 楼 z253642075 的回复:
引用 6 楼 zhxianbin 的回复:
代码里面找,还能去哪找呢?!
是指在那个程序的源代码里面找吗?
当然了,别的源代码和他有关系吗?! 楼主还是要学习基础知识啊
z253642075 2014-12-28
  • 打赏
  • 举报
回复
引用 6 楼 zhxianbin 的回复:
代码里面找,还能去哪找呢?!
是指在那个程序的源代码里面找吗?
zhxianbin 2014-12-27
  • 打赏
  • 举报
回复
代码里面找,还能去哪找呢?!
  • 打赏
  • 举报
回复
引用 3 楼 z253642075 的回复:
引用 2 楼 q3733353520 的回复:
这个变量哪里定义的,如果是.h 则需要包含 其他文件则要全局
These are set up in "default_parameters.h"应该是default_parameters.h定义的吧,但头文件包含default_parameters.h了,请问怎么弄啊,哥?
总而言之,就是说你没有定义就使用了,你必须找到他在哪里定义的,不是所谓的应该在哪里。 变量要先定义再使用,就这么简单
z253642075 2014-12-27
  • 打赏
  • 举报
回复
引用 4 楼 q3733353520 的回复:
引用 3 楼 z253642075 的回复:
[quote=引用 2 楼 q3733353520 的回复:] 这个变量哪里定义的,如果是.h 则需要包含 其他文件则要全局
These are set up in "default_parameters.h"应该是default_parameters.h定义的吧,但头文件包含default_parameters.h了,请问怎么弄啊,哥?
总而言之,就是说你没有定义就使用了,你必须找到他在哪里定义的,不是所谓的应该在哪里。 变量要先定义再使用,就这么简单[/quote]关键我不知道去哪里找啊,哥?
z253642075 2014-12-26
  • 打赏
  • 举报
回复
引用 2 楼 q3733353520 的回复:
这个变量哪里定义的,如果是.h 则需要包含 其他文件则要全局
These are set up in "default_parameters.h"应该是default_parameters.h定义的吧,但头文件包含default_parameters.h了,请问怎么弄啊,哥?
  • 打赏
  • 举报
回复
这个变量哪里定义的,如果是.h 则需要包含 其他文件则要全局
  • 打赏
  • 举报
回复
‘param_string_4_0’在此作用域中尚未声明

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧