Я пытаюсь установить библиотеку (http://www.tau.ac.il/~stoledo/taucs/) "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. Как я мог удостовериться, что деталь версии библиотек связана в make-файле?
Я не знаю, создает ли это правильно, но я смог создать TAUCS 2.2 на 32-разрядной Ubuntu 12.04 с помощью gfortran следующим образом
Загрузите Версию 2.2 кода, с внешними библиотеками, tgz формат
wget http://www.tau.ac.il/~stoledo/taucs/2.2/taucs_full.tgz
Распакуйте его в своем выбранном местоположении
mkdir taucs_full
tar xvf taucs_full.tgz -C taucs_full
cd taucs_full
Если Вы уже не сделали так, установка libf2c2-dev
(для libf2c
)
sudo apt-get install libf2c2-dev
Удалите -Werror
флаг из глобального файла параметров компилятора (там будут предупреждениями, таким образом, он никогда не будет создавать, если мы будем рассматривать их как ошибки),
sed -i 's/-Werror//g' config/linux.mk
Теперь работайте configure
сценарий
./configure
Наконец мы должны сделать некоторую команду и библиотеку, пререкающуюся для фактического make
make "CC=gcc" "FC=gfortran -ff2c" "LIBF77=-Wl,-Bdynamic -lgfortran"
Необходимо вложить двоичный исполняемый файл ./bin/linux
- У меня нет средств протестировать его функционально, но это, по крайней мере, работает:
$ bin/linux/taucs_run
taucs_run: there is no matrix!
Ответ @steeldriver не работал как есть на меня, таким образом, я адаптировал его следующим образом. Я только изменил шаги 3 и 6 и добавил часть Тестирования.
Я использую абсолютно новую Ubuntu 14.04 32 бита. (Обратите внимание, что использование 64 битов делает вещи более сложными.)
Загрузите Версию 2.2 кода, с внешними библиотеками, tgz формат
wget http://www.tau.ac.il/~stoledo/taucs/2.2/taucs_full.tgz
Распакуйте его в своем выбранном местоположении
mkdir taucs_full
tar xvf taucs_full.tgz -C taucs_full
cd taucs_full
Установите пакеты gfortran
и libf2c2-dev
. (Я не знаю, почему @steeldriver удалил установку lib из его списка.)
sudo apt-get install gfortran libf2c2-dev
Удалите -Werror
флаг из глобального файла параметров компилятора (там будут предупреждениями, таким образом, он никогда не будет создавать, если мы будем рассматривать их как ошибки),
sed -i 's/-Werror//g' config/linux.mk
Теперь работайте configure
сценарий
./configure
Наконец мы должны сделать некоторую команду и библиотеку, пререкающуюся для фактического make
. (Эта команда отличается от той в решении @steeldriver.)
make "CC=gcc" "FC=gfortran -ff2c" "LIBF77=-Wl,-Bdynamic -lgfortran -lf2c -u MAIN__"
Необходимо получить двоичный исполняемый файл в./bin/linux и lib в./lib/linux.
Для тестирования lib, я использовал файл test_taucs.cpp
от этого сайта:
test_taucs.cpp
в taucs_full
папкаУстановите g ++
sudo apt-get install g++
Скомпилируйте cpp файл
g++ test_taucs.cpp -I ./src -I ./build/linux/ -L lib/linux/ -ltaucs -L external/lib/linux -llapack -lf77blas -lcblas -latlas -lmetis -Wl,-Bdynamic -lgfortran -lm -lf2c -u MAIN__
Выполненный a.out
./a.out
Вывод должен содержать решение (0 2 0 4), как описано в связанном сообщении в блоге.