外部でコンパイルされたオブジェクトをインクルードするようにMakefileを修正しようとしていますが、 "未定義の参照"エラーが発生しています。 Makefileを扱ったのは初めてのことです。穏やかにしてください。定義されて外部でコンパイルされたオブジェクトを含むようにメークファイルを変更する
- 修正main.cの新しいヘッダーファイルをインクルードするために、cudacrack.h
- 追加runCudaImplementation()の呼び出しがmain.cのために、私がこれまで何をやったか
- cudacrack.hでオブジェクトの依存関係
- がきれい を作る
- ソースファイルとしてcudacrack.hを含めるようにMakefile.inを修正としてcudacrack.oが含まれるようにMakefile.inファイルを修正G ++ -c cudacrack.c -o cudacrack.o
- は./configure
- メイク--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でコンパイルします。 cudacrack.o依存して、メインプログラムをリンクするメイクのために発生する必要がどのようなBuilding GPL C program with CUDA module
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'.
:私はここに私を導いた私の他の質問には、もう少し説明しますか?
あなたのメイクファイルが他のオブジェクトをどのように構築しているかを示してくれれば助かります。問題はそこに互換性がないと思われます。よりシンプルなケースを試してみてください。 'cudacrack'のための小さなテストルーチンを書いて(あなたがまだいなければ)、ビルドして実行できることを確認してください。そして、中央のケースを試してみてください... – Beta