ubuntu18.04 最后的链结失败: 输出不可表示的节

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
hwzxzpp
帖子: 1
注册时间: 2018-09-15 19:36
系统: ubuntu

ubuntu18.04 最后的链结失败: 输出不可表示的节

#1

帖子 hwzxzpp » 2018-09-15 19:40

更新了ubuntu到18.04,在编译一个软件的时候报错最后的链结失败: 输出不可表示的节,求大佬帮忙看一看。
下面是报错的一部分:

/usr/bin/x86_64-linux-gnu-ld: kspace.o: relocation R_X86_64_32S against symbol `_ZTVN9LAMMPS_NS6KSpaceE' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/x86_64-linux-gnu-ld: compute_temp_com.o: relocation R_X86_64_32S against symbol `_ZTVN9LAMMPS_NS14ComputeTempCOME' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/x86_64-linux-gnu-ld: atom_vec_ellipsoid.o: relocation R_X86_64_32S against symbol `_ZTVN9LAMMPS_NS16AtomVecEllipsoidE' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/x86_64-linux-gnu-ld: 最后的链结失败: 输出不可表示的节
collect2: error: ld returned 1 exit status
Makefile:93: recipe for target '../lmp_ubuntu' failed
make[1]: *** [../lmp_ubuntu] Error 1
make[1]: 离开目录“/home/zhupanpan/software/lammps/lammps-16Mar18/src/Obj_ubuntu”
Makefile:160: recipe for target 'ubuntu' failed
make: *** [ubuntu] Error 2

之前用ubuntu16.04的时候同样的编译方法,却没有报错,有大佬能告知一下是怎么回事吗 :Adore
头像
astolia
论坛版主
帖子: 6436
注册时间: 2008-09-18 13:11

Re: ubuntu18.04 最后的链结失败: 输出不可表示的节

#2

帖子 astolia » 2018-09-15 21:23

从16.10开始默认启用PIE了,而你这个库不支持PIE。手动给gcc加上编译选项-fno-pie和-no-pie禁掉PIE,视情况可能还要加上-fPIC
Renzhiyuan
帖子: 1
注册时间: 2020-05-12 19:17
系统: ubuntu18

Re: ubuntu18.04 最后的链结失败: 输出不可表示的节

#3

帖子 Renzhiyuan » 2020-05-12 19:23

我是初学者,和楼主有了同样的问题,请问可以告知具体操作代码吗,不胜感激
头像
astolia
论坛版主
帖子: 6436
注册时间: 2008-09-18 13:11

Re: ubuntu18.04 最后的链结失败: 输出不可表示的节

#4

帖子 astolia » 2020-05-12 21:28

Renzhiyuan 写了: 2020-05-12 19:23 我是初学者,和楼主有了同样的问题,请问可以告知具体操作代码吗,不胜感激
上面已经说得够清楚了,自己修改makefile,把给gcc的编译器加上-fno-pie和-no-pie参数,可能还需要加-fPIC
如果还听不懂,先去学一下makefile的写法的gcc编译器的用法
回复