24小时热门版块排行榜    

查看: 1665  |  回复: 10

小强V587

木虫 (正式写手)

[求助] makefile运算两个错误,敬请大神救助,急急急

我是研一做模拟的,物理化学方向,拿到一个计算代码,研究makefile已经一个多月了,现在make以后出现了两个错误。makefile大概是输入一个势能面代码,经过运算输出一个可执行的、名字为  势能面.x.opt   的可执行文件,平台是intel的X86_64。现在有两个错误,请大神解读。下边是shell的部分运算过程:测试的是HN2的一个势能面,正确计算的话会生成ANT-HN2.x.opt的可执行文件,可现在并没有生成。最近两个星期了一点进展也没有,急死了。
ifort    atomdata.o param.o c_traj.o c_struct.o c_term.o c_initial.o c_sys.o c_output.o c_dd.o angmom.o ant.o actionint.o actionint_nt.o adjtemp.o adjpress.o adtod.o arcom.o atomdiatom.o bmat.o brent.o bsstep.o carttojac.o checkfrus.o checkhop.o cnsvangmom.o comgen.o decocheck.o derivs.o diamin.o diapot.o driver.o driverim.o detmtbt.o elecdeco.o erotc.o ewkb.o fileopen.o finalstate.o frag.o fragcom.o func.o gaussq.o geom_opt.o getdvec2.o getdvec.o getgrad.o getgrad2.o getpem.o getrho.o getrhocsdm.o gettemp.o getpress.o gepol_mod.o gepol_unmod.o setupvolume.o volume_interface.o hardwall.o header.o hop.o honey.o ifsame.o ifsame2.o initelec.o initmol.o initrot.o inittrans.o intcart.o intcoord.o integhop.o invmtbt.o lindemann.o liouville.o matprint.o mmid.o momigen.o noang.o nocompp.o normod.o normod-trapz.o period.o periodimage.o pjctmomen.o pjsplit.o popmod.o popnorm.o preatomdiatom.o premol.o pzextr.o radialdist.o ranclucub.o ranclusp.o rancluns.o ranmolcub.o ranrot.o rantherm.o readin.o relenerg.o rijmatr.o rminfrag.o rk4.o rng_int.o rotprin.o rottran.o rtox.o stodeco.o takestep.o takestep2.o trapz.o turn.o turnpt.o utility.o verlet.o vwkb.o xptoy.o gen_prt.o HN2.o -mkl -O3 -L../../sprng2.0/lib /opt/intel/mkl/10.1.1.019/lib/64/libmkl_intel_ilp64.a /opt/intel/mkl/10.1.1.019/lib/64/libmkl_intel_thread.a /opt/intel/mkl/10.1.1.019/lib/64/libmkl_core.a -Wl,R/opt/intel/mkl/10.1.1.019/lib/64/libmkl_intel_ilp64.a -Wl,R/opt/intel/mkl/10.1.1.019/lib/64/libmkl_intel_thread.a -Wl,R/opt/intel/mkl/10.1.1.019/lib/64/libmkl_core.a ../../sprng2.0/lib/libsprng.a -o ../../exe/ANT-HN2.x.opt
ifort: command line error: invalid argument for option '-m'
make[1]: *** [../../exe/ANT-HN2.x.opt] Error 1
make[1]: Leaving directory `/home/cast/user/lyq/ANT16/src/obj_opt'
make: *** [yes_opt] Error 2
之前的编译过程,都是没问题的。错误1的选项“-m”是代码里的参数吗 ,但是我几乎打开过所有的代码,makedile里都没找到M相关的参数;
错误2是makefile提到的,
OBJ = $(patsubst %.f,%.o,$(SRC))
OBJ := $(patsubst %.F,%.o,$(OBJ))
OBJ := $(patsubst %.F90,%.o,$(OBJ))
OBJ := $(patsubst %.for,%.o,$(OBJ))
OBJ := $(patsubst %.f90,%.o,$(OBJ))

EXEDIR:=../$(EXEDIR)
MAKEOPT = -f ../Makefile
all: yes_opt

no_opt:
        $(MAKE) $(MAKEOPT) -C obj targ
yes_opt:
        $(MAKE) $(MAKEOPT) -C obj_opt EXESUFFIX=.opt OPT="$(OPT_FFLAGS)" targ

targ: $(TARG)
不知道怎么错了,也不知道这几句到底什么意思。敬请大神不吝赐教。金币不多,请见谅
回复此楼
努力,证明自己
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

小强V587

木虫 (正式写手)

现在又有一个错误,求救啊,怎么就没人呢
lfg.c(922): warning #167: argument of type "int *" is incompatible with parameter of type "unsigned int *"
    packed += load_int(packed,4,&rng_type);
                                             ^
这个&符号不兼容,怎么改啊!!
努力,证明自己
4楼2016-05-25 21:27:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

lijf517

木虫 (小有名气)

你那个ifort的命令的含义是链接自己程序生成的一堆.o格式的目标文件,同时链接一些库文件,最终生成可执行文件。那个命令里使用-mkl来链接mkl库,但是这个格式好像不对。ifort会读取-这个符号后的第一个字母,得到-m这一链接选项,但是ifort编译器里没有-m选项,所以出错了。链接mkl库应该用如下格式: -L$MKL_LIB_PATH -lmkl_core…等。你可以再详细了解下链接mkl库该如何操作

发自小木虫Android客户端

» 本帖已获得的红花(最新10朵)

2楼2016-05-25 04:08:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小强V587

木虫 (正式写手)

送红花一朵
引用回帖:
2楼: Originally posted by lijf517 at 2016-05-25 04:08:29
你那个ifort的命令的含义是链接自己程序生成的一堆.o格式的目标文件,同时链接一些库文件,最终生成可执行文件。那个命令里使用-mkl来链接mkl库,但是这个格式好像不对。ifort会读取-这个符号后的第一个字母,得到- ...

谢谢你的回复,我大概也猜到了应该是mkl库文件设置出了问题,但是不知道该怎么设置,感觉设置的路径是对的啊。里边有一个问题,是-mkl没有命名过就直接出现了。前边有一个mklroot的路径设置,然后complib里设置的路径调用了这个路径。makefile不是由.f文件编译成.o文件,然后链接.o生成可执行文件吗?-m命令从哪里来的呢?是-mkl没设置对,然后他以为是-mkl是-m打头的命令,是这样吧?

发自小木虫Android客户端
努力,证明自己
3楼2016-05-25 15:30:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小强V587

木虫 (正式写手)

都是闲金币少吗??是这样吗??
努力,证明自己
5楼2016-05-26 15:26:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijf517

木虫 (小有名气)

引用回帖:
4楼: Originally posted by 小强V587 at 2016-05-25 21:27:55
现在又有一个错误,求救啊,怎么就没人呢
lfg.c(922): warning #167: argument of type "int *" is incompatible with parameter of type "unsigned int *"
    packed += load_int(packed,4 ...

函数要求输入一个int*的参数,但是你传入的是一个unsigned int*, 这两个参数类型不匹配。

发自小木虫Android客户端

» 本帖已获得的红花(最新10朵)

6楼2016-05-26 19:50:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijf517

木虫 (小有名气)

引用回帖:
4楼: Originally posted by 小强V587 at 2016-05-25 21:27:55
现在又有一个错误,求救啊,怎么就没人呢
lfg.c(922): warning #167: argument of type "int *" is incompatible with parameter of type "unsigned int *"
    packed += load_int(packed,4 ...

与&符号无关。你看下声明load_int函数的头文件中,函数的第一个参数是什么类型的,再看下你调用时传入的packed参数是什么类型的。要传给相同类型才可以,特别是这种指针变量。

发自小木虫Android客户端

» 本帖已获得的红花(最新10朵)

7楼2016-05-26 19:54:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小强V587

木虫 (正式写手)

送红花一朵
引用回帖:
6楼: Originally posted by lijf517 at 2016-05-26 19:50:36
函数要求输入一个int*的参数,但是你传入的是一个unsigned int*, 这两个参数类型不匹配。
...

非常感谢您的回答,帮助我很多
努力,证明自己
8楼2016-05-26 20:42:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小强V587

木虫 (正式写手)

送红花一朵
引用回帖:
7楼: Originally posted by lijf517 at 2016-05-26 19:54:42
与&符号无关。你看下声明load_int函数的头文件中,函数的第一个参数是什么类型的,再看下你调用时传入的packed参数是什么类型的。要传给相同类型才可以,特别是这种指针变量。
...

谢谢您的回答,对我帮助很大。我现在是初学者,也不知道这个是怎么回事,还请您不吝赐教:
#ifdef __STDC__
int *unpack_rng( char *p)
#else
int *unpack_rng(p)
char *p;
#endif
{
  int doexit=0,i, found, length, k, param;
  struct rngen *q;
  unsigned seed, lag1, lag2;
  unsigned char *packed;
  int rng_type;
  
  packed = (unsigned char *) p;
  
  packed += load_int(packed,4,&rng_type);
  if(strcmp((char *)packed,GENTYPE) != 0)
  {
    fprintf(stderr,"ERROR: Unpacked ' %.24s ' instead of ' %s '\n",  
            packed, GENTYPE);
    return NULL;
  }
  packed += strlen(GENTYPE)+1;
   
  packed += load_int(packed,4,&lag1);
  packed += load_int(packed,4,&lag2);
  packed += load_int(packed,4,&seed);
这是中间的一部分,出错位置出现的load_int也是第一次在代码中出现,在运行时也是警告,但是可以往下运行,结果对错不知道。还请您多帮助
努力,证明自己
9楼2016-05-26 20:48:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijf517

木虫 (小有名气)

不知道load_int函数具体是怎么实现的。从你贴的这段代码来看,这段代码的意思大概是从传入的一组字符串里提取rng_type,lag1,lag2和seed的值。比如传入的是“123 45 678 9",那么这四个变量的值就分别问123,45,678,9。load_int函数应该是每次提取一个整数。这代码里涉及unsigned char, char和unsigned(int)。其中unsigned char取值范围为0~255,char取值范围为-128~127。这两种类型在内存中都占一个字节。unsigned(int)在内存中所占字节与编译器有关,现在一般都是4个字节即32位,取值范围为0~2的32次方-1。普通int的取值范围为-2的31次方~2的31次方-1。把unsigned char赋值给unsigned int或char赋值给int都没问题,因为后者取值范围比前者大,但是反过来就不行,会出错。同样unsigned char和char之间,以及unsigned int和int之间相互赋值也可能会出错,在赋值前必须清楚变量取值范围。你贴的这段代码不全,不是非常清楚其目的,但是感觉用了这么多中类型的变量有点乱,也没必要。你试着把packed=(unsigned char*) p改成packed = p试试。这样就和load_int函数声明的参数类型一致了。我觉得char*足够了,没必要转换成unsigned char*。当然这么改是否合适还要取决于函数load_int的具体实现

发自小木虫Android客户端

» 本帖已获得的红花(最新10朵)

10楼2016-05-26 23:38:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 小强V587 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 有没有仍没收到信息的 +3 德尚中行 2026-08-27 3/150 2026-08-28 15:24 by rongshuxia
[教师之家] 导师吐槽:我怎么摊上了这么个极品研究生! +8 苏东坡二世 2026-08-23 8/400 2026-08-28 14:41 by lkforward
[基金申请] 基金不中,共勉 +11 eulota 2026-08-26 11/550 2026-08-28 14:22 by 火星超人xi
[基金申请] 国自然面上复盘~欢迎讨论 (金币+5) +12 晴天加油 2026-08-26 13/650 2026-08-28 11:32 by skyjudy
[基金申请] 基金未中,这种答复是模板吗? +5 zhaosm1982 2026-08-27 6/300 2026-08-27 16:00 by lfy8008
[基金申请] 怎么看青基中了没有啊 +5 叶九微 2026-08-26 5/250 2026-08-27 10:35 by l_zh2008
[基金申请] 2026年的国家社科基金项目通讯评审的新规则与新动向、新挑战 +7 process2012 2026-08-23 10/500 2026-08-26 19:23 by hmhminy
[基金申请] 系统查不到 +10 董八千 2026-08-26 10/500 2026-08-26 16:30 by Equinoxhua
[基金申请] 范进中举一文的中心思想 +9 炎黄贵胄 2026-08-22 10/500 2026-08-26 15:40 by semaglutide
[基金申请] 2026国自然函评费到账 +22 羊腰板 2026-08-21 25/1250 2026-08-26 15:00 by zuocuiping
[基金申请] 能否退出参与的面上项目解除限项 +23 koalala 2026-08-24 26/1300 2026-08-26 14:29 by 宝贝虫子
[基金申请] 国合里面能看到了 +7 一怀馨秋 2026-08-26 7/350 2026-08-26 11:23 by zhaosm1982
[基金申请] 国际合作可查了,中了面上 (EPI+1)(金币+50) +18 Ldrop2023 2026-08-26 18/900 2026-08-26 11:15 by cmrandy
[基金申请] 项目信息和经费信息在系统里都可以看到了 +6 wittyboy 2026-08-26 14/700 2026-08-26 10:55 by wittyboy
[基金申请] 国合可查了 +3 paperzjh 2026-08-26 3/150 2026-08-26 10:41 by LemmonTr
[基金申请] 今天务委会开完了,明天出结果吗 +19 angus9576 2026-08-25 23/1150 2026-08-26 10:03 by zp519
[基金申请] 国合现在查不到了吗? +10 chengyan1220 2026-08-24 20/1000 2026-08-26 08:57 by peasantsprig
[基金申请] 在坚冰还盖着北海的时候,我看到了怒放的梅花。 (金币+10) +6 ziyangfang 2026-08-25 9/450 2026-08-25 20:26 by huagongfeihu
[基金申请] 明天应该可查了!? +6 chengyan1220 2026-08-23 6/300 2026-08-25 19:45 by zfd97
[教师之家] 跳槽后在研项目怎么办? +5 简单化xn 2026-08-22 10/500 2026-08-23 12:38 by 简单化xn
信息提示
请填处理意见