我正在尝试安装“TAUCS”(http://www.tau.ac.il/~stoledo/taucs/)库。但是,我收到以下错误:
/usr/bin/ld: skipping incompatible external/lib/linux/libmetis.a when searching for -lmetis
/usr/bin/ld: cannot find -lmetis
/usr/bin/ld: cannot find -lg2c
collect2: error: ld returned 1 exit status
make: [build/linux/taucs_config_tests.h] Error 1 (ignored)
obj/linux/taucs_c99_complex_test build/linux/taucs_config_tests.h
make: obj/linux/taucs_c99_complex_test: Command not found
make: [build/linux/taucs_config_tests.h] Error 127 (ignored)
cc -c -O3 -Wall -Werror -std=c99 -DMACHTYPE_ -I src/ -I build/linux/ -I external/src/ \
progs/taucs_cilk_test.c \
-oobj/linux/taucs_cilk_test.o
progs/taucs_cilk_test.c:8:19: fatal error: cilk.h: No such file or directory
#include <cilk.h>
^
更多的错误随之而来。
我认为出现此错误是因为我已经使用了 gcc,它使用 gfortran 而不是 g77。
1)我可以通过这样做得到旧文件:
wget http://old-releases.ubuntu.com/ubuntu/pool/universe/g/gcc-3.4/libg2c0_3.4.6-6ubuntu5_i386.deb
sudo dpkg -i --force-all libg2c0_3.4.6-6ubuntu5_i386.deb
这在 /usr/lib/ 中创建了以下文件
libg2c.so.0
libg2c.so.0.0.0
2)之后,我找到了建议创建软链接的在线链接,如下所示:
cd /usr/lib
ln -s libg2c.so.0 libg2c.so
我想我已经把这个连同
CILKC=$(CC)
所以,我注释掉了这一行,并添加了软链接。
但是,我收到以下错误:
build/linux/makefile:11: *** commands commence before first target. Stop.
一些指导将不胜感激?
基于@steeldriver 回答的更新:在我按照上述用户的建议进行操作后,一切正常。但是,我收到了一些我非常关心的警告。
usr/bin/ld: skipping incompatible external/lib/linux/liblapack.a when searching for -llapack
....
/usr/bin/ld: skipping incompatible external/lib/linux/libf77blas.a when searching for -lf77blas
...
/usr/bin/ld: skipping incompatible external/lib/linux/libcblas.a when searching for -lcblas
....
/usr/bin/ld: skipping incompatible external/lib/linux/libatlas.a when searching for -latlas
....
/usr/bin/ld: skipping incompatible external/lib/linux/libmetis.a when searching for -lmetis
我认为这个问题可能是这些库可能是 64 位与 32 位。是否可以同时拥有两个版本的库?我可以减少 /usr/local/lib 中的频率。我如何确保特定版本的库在 makefile 中链接?
我不知道它是否构建正确,但我能够使用 gfortran 在 32 位 Ubuntu 12.04 上构建 TAUCS 2.2,如下所示
下载代码的 2.2 版,带有外部库,tgz 格式
在您选择的位置解压
如果您还没有这样做,请安装libf2c2-dev
(forlibf2c
)从全局编译器选项文件中删除
-Werror
标志(会有警告,所以如果我们将它们视为错误,它将永远不会构建)现在运行
configure
脚本最后我们需要对实际的命令和库进行一些争论
make
你应该得到一个二进制可执行文件
./bin/linux
——我没有任何方法来测试它的功能,但它至少可以运行:@steeldriver 的回答对我来说不起作用,所以我按如下方式对其进行了调整。我只更改了步骤 3 和 6,并添加了测试部分。
我正在使用全新的 Ubuntu 14.04 32 位。(请注意,使用 64 位会使事情变得更加复杂。)
编译
下载代码的 2.2 版,带有外部库,tgz 格式
在您选择的位置解压
安装软件包
gfortran
和libf2c2-dev
. (我不知道为什么@steeldriver 从他的列表中删除安装库。)从全局编译器选项文件中删除
-Werror
标志(会有警告,所以如果我们将它们视为错误,它将永远不会构建)现在运行
configure
脚本./configure
最后,我们需要为实际的
make
. (此命令与@steeldriver 解决方案中的命令不同。)您应该在 ./bin/linux 中获得二进制可执行文件,在 ./lib/linux 中获得 lib。
测试
为了测试 lib,我使用了
test_taucs.cpp
来自该站点的文件:test_taucs.cpp
文件taucs_full
夹安装 g++
编译cpp文件
用尽
输出应包含解决方案 (0 2 0 4),如链接的博客文章中所述。