Я пытаюсь изменить Makefile, чтобы включить внешне скомпилированный объект, но получаю сообщение об ошибке «неопределенная ссылка». Это первый раз, когда я имею дело с Makefiles - пожалуйста, будьте осторожны.
Что я сделал до сих пор:
- Изменен main.c для включения нового заголовочного файла cudacrack.h.
- Добавлен вызов runCudaImplementation() в main.c, который определен в cudacrack.h.
- Изменен файл Makefile.in, чтобы включить cudacrack.o в качестве зависимости объекта.
- Изменен Makefile.in для включения cudacrack.h в качестве исходного файла.
- сделать чистым
- Скомпилирован cudacrack.c с помощью: g++ -c cudacrack.c -o cudacrack.o
- ./настроить
- сделать --debug==подробный
Я получаю эту ошибку во время связывания:
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?
cudacrack
(если вы еще этого не сделали) и подтвердите, что вы можете ее собрать и запустить. Тогда попробуйте средний случай... - person Beta   schedule 23.02.2012