我在gcc(7.2.0)和pgi(18.4)编译器中遇到错误。 我正在编译的科学应用程序(在fortran中)具有某些依赖性。 这些依赖性使用-fPIC标志进行编译。 在编译主应用程序时,出现错误“重定位被截断以适合”。 当我添加标志-mcmodel = medium(pgi)时,编译成功。 但是出于某些原因,我不愿意添加此标志。 同样,当我使用-fPIC编译主应用程序时,我得到链接器错误和建议添加--no-relax标志。 添加相同后,我仍然收到重定位错误。 没有-mcmodel = medium标志,有什么方法可以编译?
编辑: 另外,当使用gnu编译器时,无论我使用什么mcmodel,都会收到重定位错误。可能与旧的链接程序有关。因为我认为,应用程序及其依赖项是使用64位库编译的,而链接器正是我假定使用32位库进行操作的。作为执行/ld-linux.so --list时成功使用pgi进行编译的原因,我收到一条错误消息,指出无法映射到零填充页面。并且在运行可执行文件时,我收到一条被杀死的消息。