Неопределенные ссылки в make - PullRequest
0 голосов
/ 04 июля 2018

У меня возникли проблемы с компиляцией программы под названием RNASalsa (исходный код здесь ). Согласно инструкции, все, что мне нужно сделать, это загрузить файл tar.gz и сделать

tar zxvf RNAsalsa_xxx.tar.gz
cd RNAsalsa_xxx
make

Вывод make создает следующую ошибку:

    gcc -O1 -DUNUSED='' -g -lm -o RNAsalsa  main.o  alifold.o  align.o  constraint.o  energy_par.o  fold.o  fold_vars.o  makeMx6.o  params.o  read_input.o  sequences.o  structaln.o  scoring10.o  multiple8.o  makeMx7.o  PS_dot.o  utilities.o  utils.o  naview.o  final_consensus.o
alifold.o: In function `alifold':
RNAsalsa_0.8.1/alifold.c:186: undefined reference to `HairpinE'
RNAsalsa_0.8.1/alifold.c:203: undefined reference to `LoopEnergy'
RNAsalsa_0.8.1/alifold.c:465: undefined reference to `HairpinE'
RNAsalsa_0.8.1/alifold.c:479: undefined reference to `LoopEnergy'
fold.o: In function `ML_Energy':
RNAsalsa_0.8.1/fold.c:1242: undefined reference to `log'
fold.o: In function `HairpinE':
RNAsalsa_0.8.1/fold.c:789: undefined reference to `log'
fold.o: In function `LoopEnergy':
RNAsalsa_0.8.1/fold.c:869: undefined reference to `log'
RNAsalsa_0.8.1/fold.c:893: undefined reference to `log'
fold.o: In function `HairpinE':
RNAsalsa_0.8.1/fold.c:789: undefined reference to `log'
PS_dot.o: In function `PS_color_dot_plot':
RNAsalsa_0.8.1/PS_dot.c:764: undefined reference to `sqrt'
PS_dot.o: In function `simple_xy_coordinates':
RNAsalsa_0.8.1/PS_dot.c:805: undefined reference to `sincos'
PS_dot.o: In function `PS_dot_plot_list':
RNAsalsa_0.8.1/PS_dot.c:908: undefined reference to `sqrt'
PS_dot.o: In function `PS_color_dot_plot_turn':
RNAsalsa_0.8.1/PS_dot.c:997: undefined reference to `sqrt'
PS_dot.o: In function `PS_dot_plot_turn':
RNAsalsa_0.8.1/PS_dot.c:1027: undefined reference to `sqrt'
naview.o: In function `construct_circle_segment':
RNAsalsa_0.8.1/naview.c:981: undefined reference to `sqrt'
naview.o: In function `find_center_for_arc':
RNAsalsa_0.8.1/naview.c:1123: undefined reference to `sqrt'
RNAsalsa_0.8.1/naview.c:1130: undefined reference to `acos'
RNAsalsa_0.8.1/naview.c:1132: undefined reference to `acos'
naview.o: In function `construct_circle_segment':
RNAsalsa_0.8.1/naview.c:1006: undefined reference to `sqrt'
RNAsalsa_0.8.1/naview.c:1007: undefined reference to `atan2'
RNAsalsa_0.8.1/naview.c:1011: undefined reference to `sincos'
naview.o: In function `traverse_loop':
RNAsalsa_0.8.1/naview.c:467: undefined reference to `sincos'
RNAsalsa_0.8.1/naview.c:467: undefined reference to `sincos'
RNAsalsa_0.8.1/naview.c:463: undefined reference to `sqrt'
RNAsalsa_0.8.1/naview.c:466: undefined reference to `atan2'
RNAsalsa_0.8.1/naview.c:586: undefined reference to `asin'
RNAsalsa_0.8.1/naview.c:586: undefined reference to `sincos'
RNAsalsa_0.8.1/naview.c:587: undefined reference to `asin'
RNAsalsa_0.8.1/naview.c:587: undefined reference to `sincos'
RNAsalsa_0.8.1/naview.c:601: undefined reference to `sincos'
RNAsalsa_0.8.1/naview.c:628: undefined reference to `sincos'
RNAsalsa_0.8.1/naview.c:685: undefined reference to `sqrt'
RNAsalsa_0.8.1/naview.c:690: undefined reference to `sqrt'
RNAsalsa_0.8.1/naview.c:696: undefined reference to `sqrt'
RNAsalsa_0.8.1/naview.c:704: undefined reference to `atan2'
RNAsalsa_0.8.1/naview.c:708: undefined reference to `atan2'
RNAsalsa_0.8.1/naview.c:742: undefined reference to `sqrt'
RNAsalsa_0.8.1/naview.c:743: undefined reference to `atan2'
RNAsalsa_0.8.1/naview.c:747: undefined reference to `sqrt'
RNAsalsa_0.8.1/naview.c:748: undefined reference to `atan2'
naview.o: In function `construct_extruded_segment':
RNAsalsa_0.8.1/naview.c:1046: undefined reference to `sqrt'
RNAsalsa_0.8.1/naview.c:1068: undefined reference to `atan2'
RNAsalsa_0.8.1/naview.c:1077: undefined reference to `atan2'
RNAsalsa_0.8.1/naview.c:1083: undefined reference to `sincos'
RNAsalsa_0.8.1/naview.c:1087: undefined reference to `sincos'
naview.o: In function `traverse_loop':
RNAsalsa_0.8.1/naview.c:774: undefined reference to `sincos'
collect2: error: ld returned 1 exit status

Итак, похоже, что что-то не так в порядке вызова определенных функций. Например, функция 'alifold' имеет неопределенную ссылку на 'HairpinE', прежде чем эта функция будет определена. Кроме того, неопределенные ссылки на «log» и «sqrt» подразумевают, что он не может включить «math.h» (да, «include» есть в файлах .c).

Есть идеи, почему это может произойти? Makefile, предоставленный разработчиками, выглядит следующим образом:

EXE     = RNAsalsa
CC      = gcc
LL      = gcc
VERSION = 0.8.1
DISTNAME= RNAsalsa_0.8.1
CCFLAGS = -O1 -DUNUSED='' -g
LIBS    = -lm
INCS    = alifold.h energy_const.h \
          energy_par.h fold.h fold_vars.h intloops.h \
          pair_mat.h params.h scoretable.h \
          utils.h circfold.inc PS_dot.h structs.h
SRCS    = main.c alifold.c align.c constraint.c energy_par.c fold.c \
          fold_vars.c makeMx6.c params.c read_input.c sequences.c \
          structaln.c scoring10.c multiple8.c makeMx7.c PS_dot.c\
          utilities.c utils.c naview.c final_consensus.c
OBJS    = $(foreach file, $(SRCS:.c=.o), $(file))
all: $(EXE)
$(EXE): $(OBJS)
        $(LL) $(CCFLAGS) $(LIBS) -o $(EXE) $(OBJS)
$(OBJS): %.o: %.c
        $(CC) -c $(CCFLAGS) $< -o $@
veryclean:
        rm -f $(OBJS) $(EXE)
clean:
        rm -f $(OBJS) core

Я использую gcc 5.4.0, в Ubuntu 16.04.1 установлена ​​build-essential

Заранее спасибо

...