超算小站 超算小站
首页
  • 注册账号
  • 登录系统
  • 熟悉系统
  • 配置环境
  • 数据管理
  • 作业管理
  • 集群软件环境:

    • 01.编译环境
    • 02.基础库
    • 03.应用软件
    • 04.工具软件
    • 05.常用语言环境
    • 06.使用进阶
  • 入门课程

    • 01.超算历史
    • 02.VPN登录
    • 03.Mobaxterm工具
    • 04.Linux基本命令
    • 05.Module环境变量管理工具
    • 06.Vim文本编辑器使用
    • 07.Slurm作业管理系统
HPC&AI
  • 01.登录问题
  • 02.编译问题
  • 03.作业问题
  • 04.存储和数据问题
  • 05.GPU问题
资料下载
归档
关于我
🚀试用
首页
  • 注册账号
  • 登录系统
  • 熟悉系统
  • 配置环境
  • 数据管理
  • 作业管理
  • 集群软件环境:

    • 01.编译环境
    • 02.基础库
    • 03.应用软件
    • 04.工具软件
    • 05.常用语言环境
    • 06.使用进阶
  • 入门课程

    • 01.超算历史
    • 02.VPN登录
    • 03.Mobaxterm工具
    • 04.Linux基本命令
    • 05.Module环境变量管理工具
    • 06.Vim文本编辑器使用
    • 07.Slurm作业管理系统
HPC&AI
  • 01.登录问题
  • 02.编译问题
  • 03.作业问题
  • 04.存储和数据问题
  • 05.GPU问题
资料下载
归档
关于我
🚀试用
  • 登陆问题

  • 编译问题

    • 编译问题汇总
      • 1.找不到命令mpicc/mpif90
      • 2.python版本低
      • 3 undefined reference
      • 4 MKL库
      • 5 cannot find -lxxx
      • 6 自己安装软件
    • 如何设置环境变量
  • 作业问题

  • 存储和数据问题

  • GPU问题

  • 常见问题
  • 编译问题
mrzhenggang
2020-11-02
目录

编译问题汇总

# 编译问题汇总

# 1.找不到命令mpicc/mpif90

问题:在天河系统上,使用 mpif90 编译并行程序,提示说 command not found

解答:天河系统上使用的 mpif90 由于有不同版本的 mpi,所以没有设置mpif90 的环境变量,用户可以查看手册"编译环境"章节设置环境变量即可。

# 2.python版本低

问答:我需要使用高版本的 python,可以我输入 python 后,系统显示的是 Python 2.6

解答:我们在系统的共享目录下面部署了多个版本的python,您可以通过设置环境变量来使用高版本的 python。

# 3 undefined reference

问题:常见的 undefined reference to 问题解决办法

解答:

  • 目标文件缺失

    原因:当进行可执行程序链接时,链接命令中找不到某个函数所在源代码的目标文件 ***.o,出现 undefined reference to *** 错误。

    解决办法:找到需要的目标文件 ***.o ,然后将其添加到链接命令中,解决问题。

  • 库文件缺失

    原因:当进行可执行程序链接时,链接命令中找不到某个库函数所在的库文件,出现 undefined reference to *** 错误。

    解决办法:找到需要的库文件,然后将其绝对路径使用-L 和-l 添加到链接命令中,解决问题。

  • 多个库文件连接顺序

    原因:当进行可执行程序链接时,所需目标文件和库文件均齐全,但由于链接顺序问题,出现库文件依赖报错,从而同样会出现 undefined reference to *** 错误。

    解决办法:在链接命令中给出所依赖的库时,需要注意库之间的依赖顺序,依赖其他库的库一定要放到被依赖库的前面,避免 undefined reference 的错误,完成编译链接。

  • C++代码链接 C 库文件

    原因:若库文件或目标文件由 c 代码生成的,则在c++代码中链接目标函数时,也会碰到 undefined reference 的问题。

    解决办法:由于 c++代码调用 c 语言库的函数,链接目标文件时候找不到,出现 undefined reference to *** 错误。只需在调用 C 语言库函数的源码文件中,把与 c 语言库相关的头文件包含添加一个 extern "C"的声明即可。

# 4 MKL库

问题:在链接 MKL 库时,报错undefined reference to dgemm_ ***

原因:原因为 MKL 库没有被有效链接,请使用相关参数设置。高版本的 Intel MKL 库可以直接使用-mkl编译参数

MKL库参数详细设置方法:英特尔® 数学核心函数库 (opens new window)

# 5 cannot find -lxxx

问题:使用 Intel 编译器编译时报错:ld: cannot find -lm

解答:编译时出现该报错,一般是由于在编译选项中含有 -fast(包含 -static )或 -static 导致的,该选项需要使用 glibc 的静态库。由于部分操作系统没有安装 glibc 的静态库,或者 glibc 库不在标准目录下,因而没有 libm 的静态库。

解决方法:

locate libm.a
ifort -static hello.f90 - L/usr/lib/x86_64-redhat-linux6E/lib64/ -lm
1
2

可参考链接:Error: ld: cannot find -lm (opens new window)

# 6 自己安装软件

问题:用户是否可以在上系统上自行安装软件?

解答:如果是开源软件,用户可以在共享目录下查找,或者在自己的账户下部署。如果是商业软件,需用户有软件的使用版权,仅限于该用户自己使用,且用户须对合法性负责。

网络延迟检测
如何设置环境变量

← 网络延迟检测 如何设置环境变量→

Theme by Vdoing | Copyright © 2015-2024 Zheng Gang | MIT License | 津ICP备2021008634号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×