【发布时间】:2011-02-06 17:34:59
【问题描述】:
我发现 CUDA 在我的 mac 上无法在 64 位模式下工作(或者到目前为止无法运行)。因此,我决定将所有内容编译为 32 位。
我使用 cmake 2.8 并添加了以下选项
add_definitions(-Wall -m32)
set(CUDA_64_BIT_DEVICE_CODE OFF)
set(CMAKE_MODULE_LINKER_FLAGS -m32)
但是,当它尝试链接它时,它会执行以下操作:
/usr/bin/c++ -mmacosx-version-min=10.6 -Wl,-search_paths_first -headerpad_max_install_names CMakeFiles/SimpleTestsCUDA.dir/BlockMatrix.cpp.o CMakeFiles/SimpleTestsCUDA.dir/Matrix.cpp.o ./SimpleTestsCUDA_generated_SimpleTests.cu.o ./SimpleTestsCUDA_generated_BlockMatrix.cu.o -o SimpleTestsCUDA /usr/local/cuda/lib/libcudart.dylib /usr/local/cuda/lib/libcuda.dylib
由于 ld 的大量“文件不是必需的体系结构”警告而失败。现在,如果我将 -m32 手动添加到上面的命令中,它就可以工作了。但是我不知道如何教 cmake 在每个 gcc(或 ld)调用中添加 -m32。到目前为止,它适用于 nvcc 和 gcc,但不适用于链接..
【问题讨论】:
-
发现如果我使用以下标志调用 cmake,它会起作用:-DCMAKE_C_FLAGS=-m32 --DCMAKE_CXX_FLAGS=-m32
-
我想我明白了.. set(CMAKE_C_FLAGS -m32) set(CMAKE_CXX_FLAGS -m32)