2010-04-11 7 views
2

Я понял, что CUDA не работает в 64-битном режиме на моем mac (или не смог запустить его до сих пор). Поэтому я решил собрать все для 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 добавлять -m32 для каждого вызова gcc (или ld). До сих пор он делает это для NVCC и GCC, но не для связи ..

+1

Разобрался, что это работает, если я призываю CMake со следующими флагами: -DCMAKE_C_FLAGS = -m32 --DCMAKE_CXX_FLAGS = -m32 – Nils

+0

Я думаю, что я понял это .. набор (CMAKE_C_FLAGS -m32) комплект (CMAKE_CXX_FLAGS -m32) – Nils

ответ

2

Если установить ENV вар LDFLAGS перед запуском CMake по проекту он будет работать, а также:

export LDFLAGS=-m32 
cmake ../source 
3

см.выше

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

Теперь, когда вы решили проблему, вы должны отметить ответ как принятый, так что остальные из нас могут видеть, что на него ответили, когда мы смотрим на список вопросов. :) –

+0

Вы должны подождать как три дня или около того, пока не сможете принять свой собственный ответ: D Итак, я принял ответ от Билла Хоффмана .. – Nils

1

Другим решение может быть сказать:

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

Надеется, что это помогает.

Смежные вопросы