Как установить библиотеку, которая использует g77

Я пытаюсь установить библиотеку (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-файле?

0
задан 22 January 2015 в 03:43

2 ответа

Я не знаю, создает ли это правильно, но я смог создать TAUCS 2.2 на 32-разрядной Ubuntu 12.04 с помощью gfortran следующим образом

  1. Загрузите Версию 2.2 кода, с внешними библиотеками, tgz формат

    wget http://www.tau.ac.il/~stoledo/taucs/2.2/taucs_full.tgz
    
  2. Распакуйте его в своем выбранном местоположении

    mkdir taucs_full
    
    tar xvf taucs_full.tgz -C taucs_full
    
    cd taucs_full
    
  3. Если Вы уже не сделали так, установка libf2c2-dev (для libf2c)

    sudo apt-get install libf2c2-dev
  4. Удалите -Werror флаг из глобального файла параметров компилятора (там будут предупреждениями, таким образом, он никогда не будет создавать, если мы будем рассматривать их как ошибки),

    sed -i 's/-Werror//g' config/linux.mk
    
  5. Теперь работайте configure сценарий

    ./configure
    
  6. Наконец мы должны сделать некоторую команду и библиотеку, пререкающуюся для фактического make

    make "CC=gcc" "FC=gfortran -ff2c" "LIBF77=-Wl,-Bdynamic -lgfortran"
    

Необходимо вложить двоичный исполняемый файл ./bin/linux - У меня нет средств протестировать его функционально, но это, по крайней мере, работает:

$ bin/linux/taucs_run 
taucs_run: there is no matrix!
1
ответ дан 6 October 2019 в 03:38

Ответ @steeldriver не работал как есть на меня, таким образом, я адаптировал его следующим образом. Я только изменил шаги 3 и 6 и добавил часть Тестирования.

Я использую абсолютно новую Ubuntu 14.04 32 бита. (Обратите внимание, что использование 64 битов делает вещи более сложными.)

Компиляция

  1. Загрузите Версию 2.2 кода, с внешними библиотеками, tgz формат

    wget http://www.tau.ac.il/~stoledo/taucs/2.2/taucs_full.tgz
    
  2. Распакуйте его в своем выбранном местоположении

    mkdir taucs_full
    
    tar xvf taucs_full.tgz -C taucs_full
    
    cd taucs_full
    
  3. Установите пакеты gfortran и libf2c2-dev. (Я не знаю, почему @steeldriver удалил установку lib из его списка.)

    sudo apt-get install gfortran libf2c2-dev
    
  4. Удалите -Werror флаг из глобального файла параметров компилятора (там будут предупреждениями, таким образом, он никогда не будет создавать, если мы будем рассматривать их как ошибки),

    sed -i 's/-Werror//g' config/linux.mk
    
  5. Теперь работайте configure сценарий

    ./configure

  6. Наконец мы должны сделать некоторую команду и библиотеку, пререкающуюся для фактического make. (Эта команда отличается от той в решении @steeldriver.)

    make "CC=gcc" "FC=gfortran -ff2c" "LIBF77=-Wl,-Bdynamic -lgfortran -lf2c -u MAIN__"
    

Необходимо получить двоичный исполняемый файл в./bin/linux и lib в./lib/linux.

Тестирование

Для тестирования lib, я использовал файл test_taucs.cpp от этого сайта:

  1. Поместить test_taucs.cpp в taucs_full папка
  2. Установите g ++

    sudo apt-get install g++
    
  3. Скомпилируйте 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__
    
  4. Выполненный a.out

    ./a.out
    

Вывод должен содержать решение (0 2 0 4), как описано в связанном сообщении в блоге.

1
ответ дан 6 October 2019 в 03:38

Другие вопросы по тегам:

Похожие вопросы: