找回密码
 注册
查看: 2990|回复: 13

使用并行编译命令联接目标文件出现错误,望各位指点迷津

[复制链接]
发表于 2004-5-14 11:39:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我用mpif77 -c duns.f 将dunsf.f文件编译成目标文件 dunsf.o;用mpicc -c dunsc.c将dunsc.c编译成dunsc.o;然后用mpicc -o duns.e dunsf.o dunsc.o -lg2c -lm时出现如下错误,请高人指点。
dunsf.o(.text+0xa3432): undefined reference to `for_cpstr'
dunsf.o(.text+0xa3482): undefined reference to `for_cpstr'
dunsf.o(.text+0xa34d2): undefined reference to `for_cpstr'
dunsf.o(.text+0xa3592): undefined reference to `for_write_seq_lis'
dunsf.o(.text+0xa35c2): undefined reference to `for_write_seq_lis_xmit'
dunsf.o(.text+0xa3612): undefined reference to `for_write_seq_lis_xmit'
dunsf.o(.text+0xa3652): undefined reference to `for_cpystr'
dunsf.o(.text+0xa3682): undefined reference to `for_cpystr'
dunsf.o(.text+0xa36b2): undefined reference to `for_cpystr'
dunsf.o(.text+0xa36e2): undefined reference to `for_cpystr'
dunsf.o(.text+0xa3702): undefined reference to `for_rewind'
dunsf.o(.text+0xa3762): undefined reference to `for_write_seq_lis'
dunsf.o(.text+0xa37a2): undefined reference to `for_close'
dunsf.o(.text+0xa3882): undefined reference to `for_concat'
dunsf.o(.text+0xa3902): undefined reference to `for_open'
发表于 2004-5-14 15:10:28 | 显示全部楼层

使用并行编译命令联接目标文件出现错误,望各位指点迷津

你用的是什么编译器?最好用同一家的编译器,例如f77和gcc, 或者pgf77 和pgcc。
 楼主| 发表于 2004-5-14 17:02:36 | 显示全部楼层

使用并行编译命令联接目标文件出现错误,望各位指点迷津

mpicc mpif77
发表于 2004-5-14 19:14:20 | 显示全部楼层

使用并行编译命令联接目标文件出现错误,望各位指点迷津

用mpif77连接看看!
 楼主| 发表于 2004-5-14 19:35:43 | 显示全部楼层

使用并行编译命令联接目标文件出现错误,望各位指点迷津

[这个贴子最后由wangdingxi在 2004/05/14 07:40pm 第 1 次编辑]

已经试过了,不行,出错如下:
/usr/local/intel_fc_80/lib/for_main.o: In function `main':
/usr/local/intel_fc_80/lib/for_main.o(.text+0x0): multiple definition of `main'
main.o(.text+0x0): first defined here
/usr/bin/ld: Disabling relaxation: it will not work with multiple definitions
/usr/bin/ld: Warning: size of symbol `main' changed from 31232 to 128 in /usr/lo
cal/intel_fc_80/lib/for_main.o
/usr/local/intel_fc_80/lib/for_main.o: In function `main':
/usr/local/intel_fc_80/lib/for_main.o(.text+0x42): undefined reference to `MAIN_
_'
发表于 2004-5-14 19:53:14 | 显示全部楼层

使用并行编译命令联接目标文件出现错误,望各位指点迷津

我试试看能否搞定!
发表于 2004-5-15 00:24:51 | 显示全部楼层

使用并行编译命令联接目标文件出现错误,望各位指点迷津

老大,mpif77这些只是一个script 文件,你可以打开看看里面用的是那个编译器。
发表于 2004-5-15 15:55:56 | 显示全部楼层

使用并行编译命令联接目标文件出现错误,望各位指点迷津

wangdingxi,我昨天试试了,可以用mpif77搞定,但makefile文件要注意以下的地方:
1 set env DUNSARC=linuxpar
2 recompile and re install lib
3 LINKER=mpif77
4 LFLAGS=
  SYSLIB=
你的邮箱呢,我可以把我的makefile给你发过去。我用的编译器是absoft公司的f77。
boling:感谢你的提醒,我也知道mpif77是脚本。
-----------------------------
               当时明月在,何时照我归。

 楼主| 发表于 2004-5-16 10:29:03 | 显示全部楼层

使用并行编译命令联接目标文件出现错误,望各位指点迷津

谢谢shyang5大侠,我明天试一下(学校计算中心的计算机周末不开机)。
其实我也改动了makefile,环境变量我也设置了
我是用bash,所以时这样的
DUNSARC=linuxpar
export DUNSARC
你的第3,4,条我没改,
 楼主| 发表于 2004-5-16 17:39:26 | 显示全部楼层

使用并行编译命令联接目标文件出现错误,望各位指点迷津

shyang5大侠,您用DUNS做过并行计算没有?DUNS能不能坐并行计算?我看D. Schwer的博士论文里面提到了DUNS能够做并行计算,但是sourceforge上面的说duns不能够坐并行计算。我不知道DUNS究竟能不能够。您能否给我指点一下?谢谢!
发表于 2004-5-17 08:56:19 | 显示全部楼层

使用并行编译命令联接目标文件出现错误,望各位指点迷津

从出错信息是说有两个MAIN? 你的C程序里面也有一个主程序吗?
 楼主| 发表于 2004-5-17 10:00:38 | 显示全部楼层

使用并行编译命令联接目标文件出现错误,望各位指点迷津

事实上,根本没有两个主程序
 楼主| 发表于 2004-5-17 16:33:46 | 显示全部楼层

使用并行编译命令联接目标文件出现错误,望各位指点迷津

按照shyang5大侠的提示,我搞定了,以前用intel8.0的编译器,后来改用7.0就好了。
但是运行的时候出现如下错误
[0] Error: Unable to open a GM port !
[1] Error: Unable to open a GM port !
 楼主| 发表于 2004-5-17 19:01:56 | 显示全部楼层

使用并行编译命令联接目标文件出现错误,望各位指点迷津

找了解决办法,
采用下面的命令运行
mpirun -machinefile hosts -np 4 ./duns-opt.e
在文件hosts中列出可用结点名字
搞了一天,晕得很
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表