cmake、gcc、cuda 和 -m32

发布于 2024-08-28 14:59:24 字数 798 浏览 3 评论 0原文

我发现 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 将 -m32 添加到每个 gcc (或 ld)调用中。到目前为止,它适用于 nvcc 和 gcc,但不适用于链接。

I figured out that CUDA does not work in 64bit mode on my mac (or couldn't get it running so far). Therefore I decided to compile everything for 32bit.

I use cmake 2.8 and added the following options

add_definitions(-Wall -m32)
set(CUDA_64_BIT_DEVICE_CODE OFF)
set(CMAKE_MODULE_LINKER_FLAGS -m32)

However when it tries to link it it does something like this:

/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 

Which fails with a lot of "file is not of required architecture" warnings from ld. Now if I add manually -m32 to the command above it works. However I have no idea how to teach cmake to add -m32 to every gcc (or ld) invocation. So far it does it for nvcc and gcc, but not for linking..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

忘年祭陌 2024-09-04 14:59:24

如果在项目上运行 cmake 之前设置环境变量 LDFLAGS ,它也会起作用:

export LDFLAGS=-m32
cmake ../source

If you set the env var LDFLAGS before you run cmake on the project it will work as well:

export LDFLAGS=-m32
cmake ../source
我最亲爱的 2024-09-04 14:59:24

见上文

set(CMAKE_C_FLAGS -m32)
set(CMAKE_CXX_FLAGS -m32)

see above

set(CMAKE_C_FLAGS -m32)
set(CMAKE_CXX_FLAGS -m32)
够运 2024-09-04 14:59:24

另一种解决方案可能是说:

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

希望这有帮助。

Another solution might be to say:

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

Hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文