计算化学公社

 找回密码 Forget password
 注册 Register
Views: 5803|回复 Reply: 6
打印 Print 上一主题 Last thread 下一主题 Next thread

[Windows] 问题:windows 下和linux下的dislin编译出错

[复制链接 Copy URL]

265

帖子

5

威望

2363

eV
积分
2728

Level 5 (御坂)

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 zhanfei 于 2015-5-28 01:19 编辑

大家好。我用的是MGwin下的gfortran,-c编译是能过得 我把dislin.f90也编译成.o.

C:\dislin\examples>
gfortran -o exa_f90.o  dislin.o dislin.mod c:\dislin\dismg.a -luser32 -lgdi32 -lopengl32,看dislin附带脚本对dislin库是直接写的全称不是通常的-L -l,不知道是什么原因。
错误如下
c:/anaconda/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64
-mingw32/bin/ld.exe:dislin.mod: file format not recognized; treating as linker s
cript
c:/anaconda/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64
-mingw32/bin/ld.exe:dislin.mod:1: syntax error
collect2.exe: error: ld returned 1 exit status

Linux下 gcc 编译也是没问题 gcc -c exa_c.c -I$DISLIN但是链接出错gcc -o exa_c.o -L$DISLIN -ldislin -lm 按-L -l写提示找不到库,而/usr/lib/libdislin.so 就是clink脚本中指定的库,但是提示是
/usr/bin/ld: skipping incompatible /usr/lib/libdislin.so when searching for -ldislin

全部错误如下
/usr/bin/ld: skipping incompatible /usr/local/dislin/libdislin.so when searching for -ldislin
/usr/bin/ld: skipping incompatible /usr/local/dislin/libdislin.a when searching for -ldislin
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../libdislin.so when searching for -ldislin
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../libdislin.a when searching for -ldislin
/usr/bin/ld: skipping incompatible /lib/libdislin.so when searching for -ldislin
/usr/bin/ld: skipping incompatible /lib/libdislin.a when searching for -ldislin
/usr/bin/ld: skipping incompatible /usr/lib/libdislin.so when searching for -ldislin
/usr/bin/ld: skipping incompatible /usr/lib/libdislin.a when searching for -ldislin
/usr/bin/ld: cannot find -ldislin
collect2: error: ld returned 1 exit status


gcc -o exa_c.o $DISLIN/libdislin.so  -lm  把动态库全称加上提示无法读取
全部错误如下
/usr/local/dislin/libdislin.so: could not read symbols: File in wrong format
collect2: error: ld returned 1 exit status


谢谢大家





本周目已沉沦,下个世界再会

6万

帖子

99

威望

5万

eV
积分
120101

管理员

公社社长

2#
发表于 Post on 2015-5-28 03:32:16 | 只看该作者 Only view this author
dislin对各个平台各种编译器都有预编译好的,直接用现成的不就行了?
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办极高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入北京科音微信公众号获取北京科音培训的最新消息,并避免错过网上有价值的计算化学文章!
欢迎加入人气极高、专业性特别强的理论与计算化学综合交流群思想家公社QQ群(群号见此链接),合计达一万多人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大、极为流行的量子化学波函数分析程序)
Google Scholar:https://scholar.google.com/citations?user=tiKE0qkAAAAJ
ResearchGate:https://www.researchgate.net/profile/Tian_Lu

265

帖子

5

威望

2363

eV
积分
2728

Level 5 (御坂)

3#
 楼主 Author| 发表于 Post on 2015-5-28 12:26:52 | 只看该作者 Only view this author
sobereva 发表于 2015-5-28 03:32
dislin对各个平台各种编译器都有预编译好的,直接用现成的不就行了?

sob sennsei是说clink f90link这些脚本吗?这些也是报错,我看了脚本中命令是-L -l的会报错/usr/bin/ld: skipping incompatible /usr/lib/libdislin.so when searching for -ldislin,,是写完整库名的报错/usr/local/dislin/libdislin.so: could not read symbols: File in wrong format。centos7 和ubuntu上都是,实在不行换低版本系统再试试
本周目已沉沦,下个世界再会

6万

帖子

99

威望

5万

eV
积分
120101

管理员

公社社长

4#
发表于 Post on 2015-5-28 12:31:47 | 只看该作者 Only view this author
这是我以前写的dislin用法,主要就看靠后部分就行了

------------
windows cvf6.5下使用方法(双精度)。对于ivf则是将disdvf_d改为disifc_d。
下载安装包,解压到随意一处,运行里面setup.exe,安装到c:\dislin
设定环境变量DISLIN为c:\dislin,path环境变量里添加c:\dislin\win
将c:\dislin\win\disdll_d.dll复制到c:\windows\system32下
在CVF的project-setting-link里面添加disdll_d.lib disdvf_d.lib
将c:\dislin\disdll_d.lib和disdvf_d.lib复制到工程文件所在目录(这是CVF默认的搜索目录)
把c:\dislin\real64下的dislin.mod改名为dislin_d.mod并放到工程文件所在目录。
对于使用单精度版本,同上,但考虑没有_d的情况就行了,dislin.mod就是c:\dislin目录下那个。
(如果用较新cvf比如6.6,应当用DF98\BIN\F90.exe加-c参数编译c:\dislin\dislin.f90,将出现新的dislin.mod,对于双精度则编译C:\dislin\real64\dislin.f90)

linux下安装方法
下载dislin-9.5.linux.i586_64.tar.gz,解压到任意一处,export DISLIN=/sob/dislin,运行./INSTALL。然后安装文件可以删掉了,并把/sob/dislin添加到$LD_LIBRARY_PATH。编译时只需ifort wfn.f90 -I/sob/dislin/ifc /sob/dislin/lib/dislin-9.5.a -lX11。(自带说明还要把/sob/dislin/bin添加到$PATH,其实没必要,bin里面有用的没什么)。

直接使用法(Windows):把dislin_d.mod、disdll_d.lib、disifc_d.lib(CVF为disdvf_d.lib)、dislin_d.dll都放在相应的工程文件目录下就行了,IVF、CVF会自动从当前目录下找。
直接使用法(Linux):在压缩包中将linux_i586_64/lib/的.a文件拷出来,将linux_i586/ifc/的dislin_d.mod拷出来即可。
.a/.lib文件是通用的,但是.mod文件通用性差,可能编译器版本不同就导致不能用,官网提供的可能不行。此时,用当前编译器带-c编译dislin.f90或dislin_d.f90即得到dislin.mod文件(编译dislin_d.f90也得dislin.mod,应改名为dislin_d.mod)
----------
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办极高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入北京科音微信公众号获取北京科音培训的最新消息,并避免错过网上有价值的计算化学文章!
欢迎加入人气极高、专业性特别强的理论与计算化学综合交流群思想家公社QQ群(群号见此链接),合计达一万多人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大、极为流行的量子化学波函数分析程序)
Google Scholar:https://scholar.google.com/citations?user=tiKE0qkAAAAJ
ResearchGate:https://www.researchgate.net/profile/Tian_Lu

265

帖子

5

威望

2363

eV
积分
2728

Level 5 (御坂)

5#
 楼主 Author| 发表于 Post on 2015-5-28 14:01:47 | 只看该作者 Only view this author
sobereva 发表于 2015-5-28 12:31
这是我以前写的dislin用法,主要就看靠后部分就行了

------------

谢谢sob sennsei
我定义DISLIN后,ifort exa_f90.f90  -I$DISLIN/ifc $DISLIN/lib/dislin-10.5.a -lX11
这次是报错
一堆
ld: i386 architecture of input file `/home/zhanfei/dislin/lib/dislin-10.5.a(surfcp_.o)' is incompatible with i386:x86-64 output
和很多
/home/zhanfei/dislin/lib/dislin-10.5.a(qqdini.o): In function `qqstbs':
qqd_unx.c:(.text+0x35df): undefined reference to `XmTextFieldSetEditable'
qqd_unx.c:(.text+0x3610): undefined reference to `XmTextFieldGetString'
qqd_unx.c:(.text+0x36cb): undefined reference to `XmTextFieldSetEditable'
qqd_unx.c:(.text+0x36e2): undefined reference to `XmTextFieldGetString'
qqd_unx.c:(.text+0x371b): undefined reference to `XtStrings'
qqd_unx.c:(.text+0x3755): undefined reference to `XtSetValues'
qqd_unx.c:(.text+0x37b8): undefined reference to `XtStrings'
qqd_unx.c:(.text+0x37d9): undefined reference to `XtSetValues'
把dislin.mod文件 和 dislin-10.5.a拷到程序同文件夹下
ifort exa_f90.f90  ./dislin-10.5.a -lX11
也是类似的错误
/home/zhanfei/dislin/lib/dislin-10.5.a(qqdini.o): In function `qqstbs':
qqd_unx.c:(.text+0x35df): undefined reference to `XmTextFieldSetEditable'
即使dislin。mod在当前文件夹下,好像还是找不到
本周目已沉沦,下个世界再会

6万

帖子

99

威望

5万

eV
积分
120101

管理员

公社社长

6#
发表于 Post on 2015-5-28 14:15:45 | 只看该作者 Only view this author
zhanfei 发表于 2015-5-28 14:01
谢谢sob sennsei
我定义DISLIN后,ifort exa_f90.f90  -I$DISLIN/ifc $DISLIN/lib/dislin-10.5.a -lX11
...

第一个错误应该是下的版本不对
后面那些undefined reference是link的时候没有从源代码或者库文件中找到那些函数,上网搜搜弄清楚是哪个库提供的,到时候写到编译指令里
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办极高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入北京科音微信公众号获取北京科音培训的最新消息,并避免错过网上有价值的计算化学文章!
欢迎加入人气极高、专业性特别强的理论与计算化学综合交流群思想家公社QQ群(群号见此链接),合计达一万多人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大、极为流行的量子化学波函数分析程序)
Google Scholar:https://scholar.google.com/citations?user=tiKE0qkAAAAJ
ResearchGate:https://www.researchgate.net/profile/Tian_Lu

265

帖子

5

威望

2363

eV
积分
2728

Level 5 (御坂)

7#
 楼主 Author| 发表于 Post on 2015-5-28 15:52:50 | 只看该作者 Only view this author
sobereva 发表于 2015-5-28 14:15
第一个错误应该是下的版本不对
后面那些undefined reference是link的时候没有从源代码或者库文件中找到 ...

thank you in advance sob sennsei,我试试
本周目已沉沦,下个世界再会

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-13 22:04 , Processed in 0.148898 second(s), 20 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list