当前位置: 技术问答>linux和unix
急:大家帮帮忙,看看这个make做了些什么
来源: 互联网 发布时间:2016-03-27
本文导语: 下面是我执行make时的一段日志, ( cd ../external/RSL/RSL ; make CC=mpicc FC=mpif77 MAX_DOMAINS=1 MAX_PROC=1024 LEARN_BCAST=-DLEARN_BCAST linux ) make -r -f makefile.linux LINUX_MPIHOME= SED_LINE="-e s/IMAX_MAKE// -e s/JMAX_MAKE// -e s/MAXDOM_MAKE/1...
下面是我执行make时的一段日志,
( cd ../external/RSL/RSL ;
make CC=mpicc FC=mpif77 MAX_DOMAINS=1 MAX_PROC=1024 LEARN_BCAST=-DLEARN_BCAST linux )
make -r -f makefile.linux LINUX_MPIHOME= SED_LINE="-e s/IMAX_MAKE// -e s/JMAX_MAKE// -e s/MAXDOM_MAKE/1/ -e s/MAXPROC_MAKE/1024/" CONFIG_OPTS="-DIMAX_MAKE= -DJMAX_MAKE= -DMAXDOM_MAKE=1 -DMAXPROC_MAKE=1024 -DHOST_NODE=0 -DMON_LOW=1 -DALLOW_RSL_168PT=1 -DLEARN_BCAST" all
cat rsl.h rsl_comm.h compat.h | sed -e s/IMAX_MAKE// -e s/JMAX_MAKE// -e s/MAXDOM_MAKE/1/ -e s/MAXPROC_MAKE/1024/ |
grep '^#.*define.*/* FORTRAN */' |
awk '{printf(" integer %sn parameter(%s=%s)n",$2,$2,$3)}' |
cat rsl.inc_base - > rsl.inc
mpicc -c -I/include -DMPI -DRSL_SYNCIO -Dlinux -DSWAPBYTES -O -DIMAX_MAKE= -DJMAX_MAKE= -DMAXDOM_MAKE=1 -DMAXPROC_MAKE=1024 -DHOST_NODE=0 -DMON_LOW=1 -DALLOW_RSL_168PT=1 -DLEARN_BCAST set_padarea.c
( cd ../external/RSL/RSL ;
make CC=mpicc FC=mpif77 MAX_DOMAINS=1 MAX_PROC=1024 LEARN_BCAST=-DLEARN_BCAST linux )
make -r -f makefile.linux LINUX_MPIHOME= SED_LINE="-e s/IMAX_MAKE// -e s/JMAX_MAKE// -e s/MAXDOM_MAKE/1/ -e s/MAXPROC_MAKE/1024/" CONFIG_OPTS="-DIMAX_MAKE= -DJMAX_MAKE= -DMAXDOM_MAKE=1 -DMAXPROC_MAKE=1024 -DHOST_NODE=0 -DMON_LOW=1 -DALLOW_RSL_168PT=1 -DLEARN_BCAST" all
cat rsl.h rsl_comm.h compat.h | sed -e s/IMAX_MAKE// -e s/JMAX_MAKE// -e s/MAXDOM_MAKE/1/ -e s/MAXPROC_MAKE/1024/ |
grep '^#.*define.*/* FORTRAN */' |
awk '{printf(" integer %sn parameter(%s=%s)n",$2,$2,$3)}' |
cat rsl.inc_base - > rsl.inc
mpicc -c -I/include -DMPI -DRSL_SYNCIO -Dlinux -DSWAPBYTES -O -DIMAX_MAKE= -DJMAX_MAKE= -DMAXDOM_MAKE=1 -DMAXPROC_MAKE=1024 -DHOST_NODE=0 -DMON_LOW=1 -DALLOW_RSL_168PT=1 -DLEARN_BCAST set_padarea.c
|
怕是不行,你需要有sed ,sed 在windows 怕是没有了
你试试把make 以后生成的文件copy到windows 下
你试试把make 以后生成的文件copy到windows 下
|
.........
vs2005的编译器的参数一览你准备好了么?
cpp的参数一览你准备好了么?
至于说
-DRWORDSIZE=4
==>
#define RWORDSIZE 4
你可以专门做一个头文件,里面就写上这些整理过的定义
也可以直接在vs2005里面使用这些宏定义。vs2005里面怎么写这些宏你参考一下vs的帮助文档。
vs2005的编译器的参数一览你准备好了么?
cpp的参数一览你准备好了么?
至于说
-DRWORDSIZE=4
==>
#define RWORDSIZE 4
你可以专门做一个头文件,里面就写上这些整理过的定义
也可以直接在vs2005里面使用这些宏定义。vs2005里面怎么写这些宏你参考一下vs的帮助文档。
|
sed /!.*'/s/'//g
应该分两部分来看:
/!.*'/ 是指对 含有 !且后边跟有'的情况的行处理
s/'//g 就是对全部的行中的'替换完毕
比如
sed /!.*'/s/'//g
对
111
222
333'
!'
!4'
!4444444'''''
中的最后三行,将所有的' 替换完
下边的命令:
/usr/bin/cpp -I../inc -I. -C -P -DRSL -DDM_PARALLEL -DNOUNDERSCORE -DIWORDSIZE=4 -DRWORDSIZE=4 -DLWORDSIZE=4 -DDWORDSIZE=8 -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` -DNO_RRTM_PHYSICS module_state_description.b > module_state_description.f
这一行,应该是定义数据类型长度的
建议:在linux 下make ,然后,对生成的参数进行修改:
如果是涉及可移植的,就查看宏定义是什么意思
如果是涉及数字类型的,就看windows 下这个值是多大,写进去就行了
偶也木有做过这活,不能说更多了
应该分两部分来看:
/!.*'/ 是指对 含有 !且后边跟有'的情况的行处理
s/'//g 就是对全部的行中的'替换完毕
比如
sed /!.*'/s/'//g
对
111
222
333'
!'
!4'
!4444444'''''
中的最后三行,将所有的' 替换完
下边的命令:
/usr/bin/cpp -I../inc -I. -C -P -DRSL -DDM_PARALLEL -DNOUNDERSCORE -DIWORDSIZE=4 -DRWORDSIZE=4 -DLWORDSIZE=4 -DDWORDSIZE=8 -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` -DNO_RRTM_PHYSICS module_state_description.b > module_state_description.f
这一行,应该是定义数据类型长度的
建议:在linux 下make ,然后,对生成的参数进行修改:
如果是涉及可移植的,就查看宏定义是什么意思
如果是涉及数字类型的,就看windows 下这个值是多大,写进去就行了
偶也木有做过这活,不能说更多了
|
还有,从楼主提的这些问题来看,操作过程中怕是还会遇到很多问题。
尽量提完整问题吧,这里不是简单的把makefile翻译过来就能解决问题的。
尽量提完整问题吧,这里不是简单的把makefile翻译过来就能解决问题的。
|
有啥问题? 这个句子在动态的根据C的定义生成fortran语句声明
|
还有,这个程序需要open mpi
一旦涉及并行,估计都是高性能的了,还是不要在windows下浪费时间了
一旦涉及并行,估计都是高性能的了,还是不要在windows下浪费时间了