C++Hello World:体系结构x86_64的未定义符号
C++ Hello World: Undefined symbols for architecture x86_64
当我试图编译一个简单的hello-world代码时,我从gcc 中得到了一些架构错误
$vim test.cpp
#include <iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
return 0;
}
$gcc test.cpp-o test.o
Undefined symbols for architecture x86_64:
"std::cout", referenced from:
_main in ccyEpFri.o
"std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
_main in ccyEpFri.o
"std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)", referenced from:
_main in ccyEpFri.o
"std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))", referenced from:
_main in ccyEpFri.o
"std::ios_base::Init::Init()", referenced from:
__static_initialization_and_destruction_0(int, int) in ccyEpFri.o
"std::ios_base::Init::~Init()", referenced from:
__static_initialization_and_destruction_0(int, int) in ccyEpFri.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
我的gcc在这里:/usr/local/bin/gcc-
$gcc—版本
gcc (GCC) 4.9.2 20141029 (prerelease)
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
系统设置:Mac OSX yosemit 10.10.2
GCC来自http://hpc.sourceforge.net/
我最初的gcc 4.2(mac上的默认值)给了我couldn't understand kern.osversion '14.1.0'
,这就是我选择的原因http://hpc.sourceforge.net/
使用g++而不是gcc。
g++是一个基于*nix的C++编译器。gcc是一个针对C、C++、Objective-C、Fortran、Java、Ada和Go的编译器。使用的库不同。您的代码将使用g++而不是gcc。
您应该使用进行编译
g++ -Wall -Wextra -g test.cpp -o mytestprog
然后运行./mytestprog
并使用gdb
对其进行调试
如果该命令不起作用,您可能会在g++
之后添加-v
(以显示正在发生的情况),这将是您的g++
配置或安装错误的症状。当然,做一个which g++
,以确保g++
是您想要的。
请阅读我关于编译GCC的提示。我相信你得到的二进制文件http://hpc.sourceforge.net/不适合您的操作系统。我建议小心地从其源代码构建、编译和安装GCC(可通过这些镜像下载)。(对新手来说)这可能不是很容易。请确保在源树的外部构建。仔细阅读安装说明。
相关文章:
- vscode g++链路故障:体系结构x86_64的未定义符号
- 体系结构x86_64的未定义符号:std:terminate(),typeinfo,运算符delete[],运算符new
- C++ 中 dlsym 的未定义符号
- 仅在 MacOS 上析构函数的未定义符号
- OSX clang++:用于 cpp 文件中显式实例化模板的体系结构x86_64的未定义符号
- PCL 出错:体系结构x86_64 @pcl的未定义符号
- clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) - 体系结构的未定义符号 x86_64:
- 体系结构x86_64的未定义符号:链接器错误
- C++ std::vector<int> 体系结构的未定义符号 x86_64:
- 生成文件:体系结构x86_64的未定义符号
- libc++abi未定义符号:_ZTVN10__cxxabif120__si-class_type_infoE
- Xcode"体系结构x86_64的未定义符号"
- 体系结构x86_64的未定义符号:找不到原因
- SWIG链接器:未定义符号:_ZN2cv8fastFreeEPv(cv::fastFree(void*))
- 如何修复架构x86_64的未定义符号,Boost Asio 1.58
- 在Qt5上去静态库:架构的未定义符号x86_64:
- 体系结构x86_64的未定义符号:c++/ h 文件和 cpp 文件
- 监视 SDK 下的未定义符号"__Unwind_SjLj_Unregister"
- 使用 Boost/Python 的未定义符号 - 复杂
- 建筑x86_64的未定义符号:"vtkDebugLeaksManager::vtkDebugLeaksManager()",引用自: