我想要一个可以在我的 Ubuntu 12.04 64 位笔记本电脑上运行的 g77 编译器。因此,我做了以下事情:
- 我通过添加以下几行来更改 sources.list:
deb http...hu.archive.ubuntu.com/ubuntu/ hardy universe
deb-src ..//hu.archive.ubuntu.com/ubuntu/ hardy universe
deb http:...hu.archive.ubuntu.com/ubuntu/ hardy-updates universe
deb-src ..//hu.archive.ubuntu.com/ubuntu/ hardy-updates universe
2.然后我在终端上执行以下操作:
sudo apt-get update
sudo apt-get install g77
当时一切看起来都很好。但是当我尝试使用 g77 编译我的 Fortran77 程序时。我收到以下错误:
/usr/bin/ld: cannot find crt1.o: No such file or directory
/usr/bin/ld: cannot find crti.o: No such file or directory
/usr/bin/ld: cannot find -lgcc_s
collect2: ld returned 1 exit status
3. 为什么 g77 不能正常工作。很多人都需要 g77,为什么 Ubuntu 不能提供可用的 g77?
4. 请帮助我!来自 ubuntu 初学者的感谢
答案1
我今天遇到了同样的问题,使用的是同样的系统,已经解决了。它可能对你有用。
如果你是专家,你可以直接跳到最后查看 3 行解决方案,或者按照我的方法,
那是:
1)
$ 定位crt1.o
/usr/lib/x86_64-linux-gnu/Mcrt1.o
/usr/lib/x86_64-linux-gnu/Scrt1.o
/usr/lib/x86_64-linux-gnu/crt1.o /usr/lib/x86_64-linux-gnu/gcrt1.o
/usr/lib32/Mcrt1.o
/usr/lib32/Scrt1.o
/usr/lib32/crt1.o
/usr/lib32/gcrt1.o
由于我使用的是 x86_64,因此只需复制“/usr/lib/x86_64-linux-gnu/”
2)
$ 定位crti.o
/usr/lib/x86_64-linux-gnu/crti.o
/usr/lib32/crti.o
它与上面的相同,因此没有什么新的。
3a)
$ 定位 lgcc_s
没有找到
恐慌...
但是,我尝试过:
3b)
$ 定位 gcc_s
/lib/i386-linux-gnu/libgcc_s.so.1
/lib/x86_64-linux-gnu/libgcc_s.so.1
/usr/lib/gcc/x86_64-linux-gnu/4.4/libgcc_s.so
/usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc_s.so
/usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc_s_32.so
/usr/lib/gcc/x86_64-linux-gnu/4.6/32/libgcc_s.so
/usr/lib32/libgcc_s.so.1
/usr/libexec/autopackage/libgcc_s.so.1
现在,我只选择旧版本 4.4,所以只需复制“/usr/lib/gcc/x86_64-linux-gnu/4.4/”
有问题的软件位于 makefile 中。打开该文件并进行以下更改:
(来自)FFLAGS=-g -O2
(到)FFLAGS = -g -O2 -B / usr / lib / x86_64-linux-gnu / -B / usr / lib / gcc / x86_64-linux-gnu / 4.4 /
简单来说:我只需为复制的每个路径添加 -B
如果您在终端中直接使用 g77,可能是:
$ g77 (...) -B/usr/lib/x86_64-linux-gnu/-B/usr/lib/gcc/x86_64-linux-gnu/4.4/ (...)
专家:
1) 使用定位来查找 crt1.o、crti.o 和-lgcc_s 的路径(搜索 gcc_s);
2) 复制您的发行版/位的路径;
3) 在您的 g77 编译调用中添加“-B path_1”和“-B path_2”(其中 path_i 是上面的路径)。
编辑
cogitoergosum,
就我而言,该软件非常老旧,fort77、gfortran 和 f77 都存在大量问题。我首先使用 ifort(Intel Fortran 编译器)成功编译。但我尝试使用 g77 作为开源替代方案。而且它有效!
答案2
尝试安装 fort77(sudo apt-get install fort77),它也会安装 f2c。使用 f77 调用 f2c 转换器进行编译/链接。祝你好运。