У меня есть небольшая проблема, и я попробовал все, чтобы проверить эту функцию, не могли бы вы мне помочь? Мне нужно написать файл C, который называется «взаимный_info.c», и ему нужна математическая функция. Я включил библиотеку и связал его в сборочном файле, но она по-прежнему дает мне «неопределенную ссылку для входа» ... мои включает выглядеть следующим образом: (я использую Eclipse, на Ubuntu)math.h связь с файлом
#include <stdio.h>
#include <stdlib.h>
#include "sample.h"
#include "graph_or.h"
#include <math.h>
и мои Makefile выглядит следующим образом:
all:
gcc -g amostra.c sample.h -o amostra.o
gcc -g graph_or.c graph_or.h -o graph_or.o
gcc -g graph_w.c graph_W.h -o graph_W.o
gcc -g mutual_info.c -o mutual_info.o -lm
clean:
rm *.o
Я совершенно не знаю, что происходит, я даже пытался определить LDFLAGS перед командой «все» и положить его так:
LDFLAGS= -lm
all:
gcc -g amostra.c sample.h -o amostra.o
gcc -g graph_or.c graph_or.h -o graph_or.o
gcc -g graph_w.c graph_W.h -o graph_W.o
gcc -g mutual_info.c -o mutual_info.o -lm
clean:
rm *.o
Но он все еще не будет работать !! Пожалуйста, всем, мне нужна помощь! Благодаря!
Этот make-файл не имеет никакого смысла. Если вы хотите сгенерировать файлы .o, вам нужен флаг '-c', и вам не нужно указывать какие-либо параметры компоновщика (т. Е. Вам не нужно' -lm'). Затем вам понадобится отдельный вызов GCC, чтобы связать все файлы .o вместе. Кроме того, вам не нужно указывать файлы .h. –
Простите, что @OliCharlesworth не мог понять, что вы говорите, не могли бы вы быть более конкретными или, может быть, показать мне код для make-файла? Я думал, что вам нужно связывать математическую библиотеку каждый раз, когда вы хотели ее использовать! Спасибо –
Типичный шаблон для компиляции - это что-то вроде: 'gcc -c -o foo.o foo.c, gcc -c -o bar.o bar.o, gcc -o myApp foo.o bar.o -lm'. –