我试图使用C++ 5.1.1和Cuda 6在MacOS X小牛上构建XCode \ Cuda应用程序。
在链接过程中,我收到以下错误:
Undefined symbols for architecture x86_64:
"std::ios_base::Init::Init()", referenced from:
___cxx_global_var_init in bmp-read.cu.o
___cxx_global_var_init in encoder_nostream.cu.o
___cxx_global_var_init in encoder_stream.cu.o
___cxx_global_var_init in tier1.cu.o
"std::ios_base::Init::~Init()", referenced from:
___cxx_global_var_init in bmp-read.cu.o
___cxx_global_var_init in encoder_nostream.cu.o
___cxx_global_var_init in encoder_stream.cu.o
___cxx_global_var_init in tier1.cu.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)我尝试在可能的情况下使用libstdc++ (-lstdc++)选项,但没有任何结果。
下面是makefile的一部分:
# Compilers
NVCC := $(CUDA_INSTALL_PATH)/bin/nvcc
CXX := g++
CC := gcc
LINK := g++ -fPIC
# Includes
INCLUDES += -I. -I$(CUDA_INSTALL_PATH)/include -I$(COMMONDIR)/inc
# architecture flag for cubin build
CUBIN_ARCH_FLAG := -m32
# Warning flags
CXXWARN_FLAGS := \
-W -Wall \
-Wimplicit \
-Wswitch \
-Wformat \
-Wchar-subscripts \
-Wparentheses \
-Wmultichar \
-Wtrigraphs \
-Wpointer-arith \
-Wcast-align \
-Wreturn-type \
-Wno-unused-function \
$(SPACE)
CWARN_FLAGS := $(CXXWARN_FLAGS) \
-Wstrict-prototypes \
-Wmissing-prototypes \
-Wmissing-declarations \
-Wnested-externs \
-Wmain \
# Compiler-specific flags
NVCCFLAGS := -ccbin /usr/bin/clang -arch=sm_30 --compiler-options -Wall,-ansi,-Wno-extra-tokens -Xcompiler -stdlib=libstdc++
CXXFLAGS := $(CXXWARN_FLAGS) -stdlib=libstdc++
CFLAGS := $(CWARN_FLAGS) -stdlib=libstdc++
...
LIB := -L$(CUDA_INSTALL_PATH)/lib -L$(LIBDIR) -L$(COMMONDIR)/lib/$(OSLOWER)
LIB += -lstdc++$(LIBSUFFIX)发布于 2014-08-06 09:38:20
诀窍是把-stdlib=libstdc++传给链接器。
LINK := g++ -fPIC -stdlib=libstdc++
https://stackoverflow.com/questions/25155345
复制相似问题