現在、MacOS 10.9 で Cmake を使用して Cuda プロジェクトを構築しようとしています。私の C および C++ コンパイラは gcc ですが、Mavericks gcc および g++ が clang にリンクしているため、CUDA ではサポートされていないようです。
実際の gcc を使用する、または「dumpspecs」なしで clang を動作させるための良い解決策を見つけた人はいますか?
現在、MacOS 10.9 で Cmake を使用して Cuda プロジェクトを構築しようとしています。私の C および C++ コンパイラは gcc ですが、Mavericks gcc および g++ が clang にリンクしているため、CUDA ではサポートされていないようです。
実際の gcc を使用する、または「dumpspecs」なしで clang を動作させるための良い解決策を見つけた人はいますか?
これは、Eugene によって提供された回答の拡張です。
Mac OSX 10.9 用の CUDA ツールキットのダウンロードがCUDA ダウンロード ページに投稿されました。
10.9 で XCode 5 をサポートし、参考までに gcc の代わりに自動的に clang を使用します。
10.8 で XCode 5 を使用している場合は、リリース ノートを参照してください。
· Mac OS X 10.8 で、コマンドライン ツールを含む XCode 5 をインストールすると、gcc コンパイラが clang に置き換えられます。--ccbin /usr/bin/clang オプションを使用すると、コマンドラインから nvcc で正常にコンパイルを続行できます。これにより、gcc の代わりに clang コンパイラを使用して、渡されたホスト コードをコンパイルするよう nvcc に指示されます。ただし、このソリューションは、NSight Eclipse Edition でビルドする場合には機能しません。コマンドラインから NSight Eclipse Edition で動作する代替ソリューションは、XCode 5 をインストールした後、Apple Developer Web サイトから古いバージョンのコマンドライン ツール パッケージをダウンロードすることです。これにより、gcc が /usr/bin に再インストールされます。 . これを行うには、に移動します
http://developer.apple.com/downloads/index.action
Apple ID でサインインし、画面左側の検索ペインを使用してコマンドライン ツールを検索します。
Clang は OsX Maverick リリースでデフォルトのコンパイラになり、gcc および g++ コマンドは clang コンパイラにリダイレクトされます。以下の手順に従って、homebrew から gcc コンパイラをダウンロードし、gcc および g++ コマンドを gcc コンパイラにリンクすることができます。
$ brew install gcc48
[...]
$ sudo mkdir /usr/bin/backup && sudo mv /usr/bin/gcc /usr/bin/g++ /usr/bin/backup
$ sudo ln -s /usr/local/bin/gcc-4.8 /usr/bin/gcc
$ sudo ln -s /usr/local/bin/g++-4.8 /usr/bin/g++
この記事で解決策を見つけました: http://gvsmirnov.ru/blog/tech/2014/02/07/building-openjdk-8-on-osx-maverick.html#all-you-had-to-do -was-follow-the-damn-train-cj
これは、Lion で私に役立つ Homebrew のレシピです。
$ brew cat memtestG80
require "formula"
# Documentation: https://github.com/Homebrew/homebrew/wiki/Formula-Cookbook
# /usr/local/Library/Contributions/example-formula.rb
# PLEASE REMOVE ALL GENERATED COMMENTS BEFORE SUBMITTING YOUR PULL REQUEST!
# Requires at compile time nvcc from https://developer.nvidia.com/cuda-downloads
# Requires popt at compile time
class Memtestg80 < Formula
homepage ""
url "https://github.com/ihaque/memtestG80/archive/master.zip"
sha1 ""
version "c4336a69fff07945c322d6c7fc40b0b12341cc4c"
# depends_on "cmake" => :build
depends_on :x11 # if your formula requires any X11/XQuartz components
def install
# ENV.deparallelize # if your formula fails when building in parallel
system "make", "-f", "Makefiles/Makefile.osx", "NVCC=/usr/local/cuda/bin/nvcc -ccbin /usr/bin/clang", "POPT_DIR=/usr/local/Cellar/popt/1.16/lib"
system "cp", "-a", "memtestG80", "/usr/local/bin"
end
test do
# `test do` will create, run in and delete a temporary directory.
#
# This test will fail and we won't accept that! It's enough to just replace
# "false" with the main program this formula installs, but it'd be nice if you
# were more thorough. Run the test with `brew test memtestG80`.
#
# The installed folder is not in the path, so use the entire path to any
# executables being tested: `system "#{bin}/program", "do", "something"`.
system "false"
end
end