Связывание библиотеки с gcc — ld: не удается найти -larpack

Я устанавливаю программное обеспечение на сервер без прав root. Я сталкиваюсь со следующей ошибкой при установке:

make[1]: *** [hgaprec] Error 1
make[1]: Leaving directory `/seq/.../SOFTWARE/hgaprec/src'
make: *** [all-recursive] Error 1
Making install in src
make[1]: Entering directory `/seq/.../SOFTWARE/hgaprec/src'
g++  -O3   -o hgaprec ratings.o main.o log.o hgaprec.o -larpack -llapack -
lblas -lgsl -lpthread -lgslcblas
/.../software/free/Linux/redhat_6_x86_64/pkgs/gcc_5.2.0/bin/ld: cannot
find -larpack
collect2: error: ld returned 1 exit status
make[1]: *** [hgaprec] Error 1
make[1]: Leaving directory `/seq/.../SOFTWARE/hgaprec/src'
make: *** [install-recursive] Error 1

Поскольку библиотека arpack не может быть найдена, я установил ее здесь /seq/…/SOFTWARE/hgaprec/ARPACK и обнаружил, что процесс сгенерировал статический файл libarpack_LINUX.a. Чтобы связать эту статическую библиотеку с gcc, была использована следующая команда:

gcc -larpack -L/seq/.../SOFTWARE/hgaprec/ARPACK/libarpack_LINUX.a

Тем не менее, я продолжаю получать ту же ошибку при установке программного обеспечения, что larpack не был найден. Я неправильно использую команду связывания?

0

Решение

Вы либо хотите gcc main.c /seq/../SOFTWARE/hgaprec/ARPACK/libarpack_LINUX.a (тебе не нужно -l а также -L если вы указываете полный путь к статической библиотеке), или как предложено @Julian_Cienfuegos gcc main.c -L/seq/../SOFTWARE/hgaprec/ARPACK/ -larpack_LINUX, Это предполагает, что вы компилируете только один файл с именем main.c который содержит ваш main() функция и выводит a.out двоичный файл.

РЕДАКТИРОВАТЬ: Добавлено объяснение main.c,

1

Другие решения

Моя проблема была решена после включения пути библиотеки ARPACK как части флага LD в configure следующим образом:

./ configure —prefix = / seq /…/ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ / hgaprec LDFLAGS = «- L / seq /…/ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ / hgaprec / ARPACK /»

0

По вопросам рекламы [email protected]