【问题标题】:Compiling multiple programs with Makefile使用 Makefile 编译多个程序
【发布时间】:2013-03-10 11:55:57
【问题描述】:

我必须使用 4 个不同的 cpp 文件并包括一个 cuda 文件来编译三个独立的程序。

文件是:

final_serial.cpp
final_mpi.cpp
final_mpicuda.cpp and final_cuda.cu

final_mpicuda.cpp 和 final_cuda.cu 必须链接在一起。

我目前的 Makefile,只是为了编译前两个文件,serial 和 mpi,看起来是这样的:

MPIDIR=/usr/lib64/mpich2/
CC=$(MPIDIR)/bin/mpic++
LIBS=-L$(MPIDIR)/lib -lmpl -lopa

all: serial mpi

mpi: final_mpi.cpp
    $(CC) $(LIBS) -o $@ $^

serial: final_serial.cpp
    g++ -o serial final_serial.cpp

想法是,为了将final_mpicuda.cppfinal_cuda.cu 链接在一起,我必须执行以下命令:

/usr/local/cuda-5.0/bin/nvcc --compiler-bindir /usr/local/gcc/bin -c final_cuda.cu -o cudacode.o
/usr/lib64/mpich2/bin/mpic++ -lmpl -lopa -c final_mpicuda.cpp -o mpicode.o
/usr/lib64/mpich2/bin/mpic++ -lmpl -lopa mpicode.o cudacode.o -L/usr/local/cuda-5.0/lib64 -lcudart -o cuda

这会产生一个名为cuda 的可执行文件。所以,我的问题是,如何使用上面提到的 Makefile 生成一个名为 cuda 的文件。我不知道如何将用于将这些文件链接在一起的三个命令合并到 Makefile 中。

谢谢

【问题讨论】:

    标签: shell unix cuda makefile mpi


    【解决方案1】:

    试试这个:

    mpicode.o: final_mpicuda.cpp
        $(CC) -lmpl -lopa -c $< -o $@
    
    cudacode.o: final_cuda.cu
        /usr/local/cuda-5.0/bin/nvcc --compiler-bindir /usr/local/gcc/bin -c $< -o $@
    
    cuda: mpicode.o cudacode.o
        $(CC) -lmpl -lopa $^ -L/usr/local/cuda-5.0/lib64 -lcudart -o $@
    

    【讨论】:

    • 我收到一条错误消息,提示“***缺少分隔符。停止。”
    • @FidelCashflo:在哪一行?
    • @FidelCashflo - 您需要为食谱使用标签。
    • 我正在使用标签。它在第 14 行 $(CC) -lmpl -lopa -c $
    • 实际上,我得到了它的工作。这是标签的错误。对于那个很抱歉。感谢您的帮助!
    猜你喜欢
    • 2011-08-22
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多