Я пытаюсь изменить Makefile, чтобы включить внешне скомпилированный объект, но получаю ошибку «неопределенная ссылка».Это первый раз, когда я имел дело с Makefiles - пожалуйста, будьте осторожны.
Что я сделал до сих пор:
- Изменен файл main.c для добавления нового файла заголовка,cudacrack.h
- Добавлен вызов runCudaImplementation () в main.c, который определен в cudacrack.h
- Изменен файл Makefile.in для включения cudacrack.o в качестве зависимости объекта
- Изменен Makefile.in для включения cudacrack.h в качестве исходного файла
- make clean
- Скомпилированный cudacrack.c с помощью: g ++ -c cudacrack.c -o cudacrack.o
- . / Configure
- make --debug == verbose
Я получаю эту ошибку при связывании:
g++ -L/usr/local/cuda/lib64/ -lcuda -lcudart -g -O2 -funroll-loops -O3 -o fcrackzip main.o crack.o cudacrack.o
main.o: In function `main':
$HOME/fcrackzip/fcrackzip-1.0/main.c:367: undefined reference to `runCudaImplementation'
collect2: ld returned 1 exit status
Примечание: на этомуказать, что имя файла "cuda" содержит только основные методы языка C.Позже я скомпилирую эту часть с помощью nvcc.Я объясню немного больше на моем другом вопросе, который привел меня здесь: Сборка программы на GPL C с модулем CUDA
Some debug info from make:
Considering target file `cudacrack.h'.
Finished prerequisites of target file `cudacrack.h'.
No commands for `cudacrack.h' and no prerequisites actually changed.
No need to remake target `cudacrack.h'.
..later..
Considering target file `cudacrack.o'.
Considering target file `cudacrack.c'.
Finished prerequisites of target file `cudacrack.c'.
No need to remake target `cudacrack.c'.
Finished prerequisites of target file `cudacrack.o'.
Prerequisite `cudacrack.c' is older than target `cudacrack.o'.
No need to remake target `cudacrack.o'.
Что должно произойти для make, чтобы связать основную программу с cudacrack.o зависимость?