Macports GCC 4.8无法链接OSX Lion上的c++库
Macports GCC 4.8 fails to link c++ library on OSX Lion
我在OSX Lion上链接一个非常简单的c++程序时遇到问题。错误消息为
Undefined symbols for architecture x86_64: "std::basic_string<char, std::char_traits<char>
以下是编译器的完整详细输出:
Nicholass-MacBook-Pro:hello_vbo-build jubei$ make VERBOSE=1
"/Applications/CMake 2.8-9.app/Contents/bin/cmake" -H/Users/jubei/coding/hello_vbo - B/Users/jubei/coding/hello_vbo-build --check-build-system CMakeFiles/Makefile.cmake 0
"/Applications/CMake 2.8-9.app/Contents/bin/cmake" -E cmake_progress_start /Users/jubei/coding/hello_vbo-build/CMakeFiles /Users/jubei/coding/hello_vbo-build/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make -f CMakeFiles/hellovbo.dir/build.make CMakeFiles/hellovbo.dir/depend
cd /Users/jubei/coding/hello_vbo-build && "/Applications/CMake 2.8-9.app/Contents/bin/cmake" -E cmake_depends "Unix Makefiles" /Users/jubei/coding/hello_vbo /Users/jubei/coding/hello_vbo /Users/jubei/coding/hello_vbo-build /Users/jubei/coding/hello_vbo-build /Users/jubei/coding/hello_vbo-build/CMakeFiles/hellovbo.dir/DependInfo.cmake --color=
make -f CMakeFiles/hellovbo.dir/build.make CMakeFiles/hellovbo.dir/build
"/Applications/CMake 2.8-9.app/Contents/bin/cmake" -E cmake_progress_report/Users/jubei/coding/hello_vbo-build/CMakeFiles 1
[100%] Building CXX object CMakeFiles/hellovbo.dir/main.cpp.o
/opt/local/bin/g++-mp-4.8 --std=c++11 -I/usr/local/include -I/Users/jubei/coding/hello_vbo/include -o CMakeFiles/hellovbo.dir/main.cpp.o -c /Users/jubei/coding/hello_vbo/main.cpp
Linking CXX executable hellovbo
"/Applications/CMake 2.8-9.app/Contents/bin/cmake" -E cmake_link_script CMakeFiles/hellovbo.dir/link.txt --verbose=1
/opt/local/bin/g++-mp-4.8 --std=c++11 -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/hellovbo.dir/main.cpp.o -o hellovbo -L/usr/local/lib -lglfw -lglew -framework Cocoa -framework OpenGL -framework IOKit -lstdc++
Undefined symbols for architecture x86_64:
"std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)", referenced from:
readTextFile(char const*) in main.cpp.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make[2]: *** [hellovbo] Error 1
make[1]: *** [CMakeFiles/hellovbo.dir/all] Error 2
make: *** [all] Error 2
我看到过很多帖子说,这种错误是由于人们使用gcc而不是g++,但在我的情况下,我使用了g++。我使用macports构建的GCC 4.8进行编译。
请注意,这个简单的程序在同一个系统上可以很好地编译。在一次干净的安装之后,它突然拒绝编译。
缺少的符号是std::string
的移动赋值运算符。我在这里猜测,发生的事情是混合使用libstd++
和libc++
编译的对象文件/库。
您可以使用/usr/lib/libstdc++进行链接,但对于4.8,您需要使用(…)/gcc4.8/lib/libstdc++进行连接,这是不同的库。
相关文章:
- OSX MetalKit CVMetalTextureCacheCreateTextureFromImage失败,状态:
- OSX蓝牙打开RFCOMMChannelAsync声称已连接,但未建立连接,并且从未调用过委托
- 在OSX上使用CMake将Adobe的XMP工具包构建为共享库的最简单方法是什么?
- Qt 5.0 and c++11 with OSX Mountain Lion
- OpenMP Mac OSX Lion c++ 链接器错误 体系结构的未定义符号 x86_64:"_omp_get_thread_num"
- Macports GCC 4.8无法链接OSX Lion上的c++库
- Using g++ on OSX Lion, ld: unknown option: -no_compact_unwin
- NPM 模块画布需要的在 OSX Mountain Lion 上安装 c++ 库的过程是什么?
- SDL与OSX lion上的终端/g++链接错误
- GDB 7.3.1 on OSX Lion
- OSX Lion上的curses.h问题
- lua_pcall去哪儿了?(OSX Lion上的Lua 5.2.0)
- 无法使用 OSX Lion 编译C++插件?
- MAC OSX LION:MAC上的gcc没有编译wget
- 在OSX Lion上使用g++的SDL
- HMAC on Mountain lion OSX 10.8.3 EXC_CRASH
- SublimeClang OSX Mountain Lion C++11
- Qt 4.8测试版和Mac OSX Lion,声子错误
- 如何在OSX lion上用clang 3.2编译c++ 11
- 即使在构建后仍然"Binary Not Found"错误(Eclipse OSX Mtn. Lion)