c++ - v7a - x86 que significa
Símbolos indefinidos para la arquitectura x86_64: ¿Qué arquitectura debo usar? (3)
Estoy tratando de hacer algunas cosas realmente simples en C ++, pero no puedo encontrar ninguna información sobre cómo abordar esto. Incluso el libro que acabo de decir "Simplemente compila y ejecuta el programa".
test.cpp
#include <iostream>
using namespace std;
int main()
{
cout << "Never fear, C++ is here!";
return 0;
}
El compilador dice:
Undefined symbols for architecture x86_64:
"std::cout", referenced from:
_main in ccVfJHGs.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 ccVfJHGs.o
"std::ios_base::Init::Init()", referenced from:
__static_initialization_and_destruction_0(int, int)in ccVfJHGs.o
"std::ios_base::Init::~Init()", referenced from:
___tcf_0 in ccVfJHGs.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Intenté compilar con indicadores como -arch i386
y -m32
pero siempre dice que es la arquitectura incorrecta. ¿Cuál debería usar?
Estoy haciendo esto en una Mac pero no usando XCode, solo gcc.
El error no es que sea la arquitectura incorrecta, es que std::cout
(y otros símbolos) no están definidos.
Debe compilar y vincular con g++
not gcc
, para vincular automáticamente con las bibliotecas correctas de C ++.
El error se debe a que está compilando con gcc
, que solo vincula por defecto a libc
. Necesitas compilar con g++
para que libstdc++
se vincule automáticamente.
Use g ++ en lugar de gcc para vincular con las bibliotecas exactas de c ++