2010-04-11 70 views
2

我發現CUDA在我的mac上無法在64位模式下工作(或者目前無法運行它)。所以我決定編譯一切爲32位。cmake,gcc,cuda和-m32

我使用的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,而不是鏈接..

+1

想通了,它的工作原理,如果我的cmake調用與以下標誌: -DCMAKE_C_FLAGS = -m32 --DCMAKE_CXX_FLAGS = -m32 – Nils 2010-04-11 15:33:07

+0

我想我想通了.. 集(CMAKE_C_FLAGS -m32) 集(CMAKE_CXX_FLAGS -m32) – Nils 2010-04-11 15:50:06

回答

2

如果你運行該項目的cmake前,將工作,以及設定的環境變量LDFLAGS

export LDFLAGS=-m32 
cmake ../source 
3

見上

set(CMAKE_C_FLAGS -m32) 
set(CMAKE_CXX_FLAGS -m32) 
+0

現在你已經解決了這個問題,你應該將答案標記爲可接受的,這樣當我們查看問題列表時,我們其他人就可以看到答案。 :) – 2010-04-12 19:54:54

+0

你必須等待三天左右,直到你可以接受你自己的答案:D所以我接受了Bill Hoffman的答案。 – Nils 2010-04-13 08:56:45

1

另一種解決方案,他們會說:

if (Apple) 
    set (CMAKE_OSX_ARCHITECTURES i386) 
    set (CUDA_64_BIT_DEVICE_CODE OFF) 
endif (Apple) 

希望這有助於。