Yak-afeitado alerta.

Aunque estoy impedido de mostrar el código fuente, me imagino que con un bien escrito el post que puede ser capaz de proporcionar suficiente información para obtener asistencia. Los pasos que he probado a continuación han sido obtenido a partir de otros puestos, y se está convirtiendo en un poco circular ahora.

Estoy en OS X con la siguiente:

MacBook-Pro-de-Pyderman:Metaphone3 Pyderman$ which g++
/usr/bin/g++
MacBook-Pro-de-Pyderman:Metaphone3 Pyderman$ arch
i386
MacBook-Pro-de-Pyderman:Metaphone3 Pyderman$ g++ --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr     
--with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin13.4.0
Thread model: posix
MacBook-Pro-de-Pyderman:Metaphone3 Pyderman$ gcc --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr     
--with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin13.4.0
Thread model: posix
MacBook-Pro-de-Pyderman:Metaphone3 Pyderman$ clang++ --version
Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin13.4.0
Thread model: posix
MacBook-Pro-de-Pyderman:Metaphone3 Pyderman$ brew --config
HOMEBREW_VERSION: 0.9.5
ORIGIN: https://github.com/Homebrew/homebrew
HEAD: edcf1d119c4ca9d79d7147a684b7d74767cbb1f6
Last commit: 6 weeks ago
HOMEBREW_PREFIX: /usr/local
HOMEBREW_REPOSITORY: /usr/local
HOMEBREW_CELLAR: /usr/local/Cellar
HOMEBREW_BOTTLE_DOMAIN: https://homebrew.bintray.com
CPU: dual-core 64-bit penryn
OS X: 10.9.5-x86_64
Xcode: N/A
CLT: 6.2.0.0.1.1424975374
Clang: 6.0 build 600
X11: 2.7.7 => /opt/X11
System Ruby: 2.0.0-p481
Perl: /usr/bin/perl
Python: /Library/Frameworks/Python.framework/Versions/2.7/bin/python => /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
Ruby: /usr/bin/ruby => /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
Java: 1.6.0_65-b14-468

Así que tengo tres archivos:

  • Metaphone3.cpp
  • Metaphone3ExampleCode.cpp
  • Metaphone3.h

Voy a tratar de compilar con g++:

g++ Metaphone3.cpp

Puedo obtener:

Undefined symbols for architecture x86_64:
"_main", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
  • gcc y clang++ informe de la misma.
  • Añadiendo-m32 no tiene ningún efecto.
  • g++ Metaphone3.cpp -I /usr/local/include no tiene ningún efecto

Si trato:

g++ -Wall -c Metaphone3.cpp

Este se deshace de la advertencia, y un Metaphone3.o y Metaphone obtener generado.

Si intento ejecutar:

MacBook-Pro-de-Pyderman:Metaphone3 Pyderman$ ./Metaphone
-bash: ./Metaphone: Malformed Mach-o file

Poco más de investigación indica que puede haber perdido una vinculación de paso. Así:

gcc Metaphone3.o -o Metaphone3

Pero esto me trae de nuevo a la original de error.

Otros posts, a continuación, sugerimos dejar caer la -c bandera, pero esta bandera que me permitió pasar el error. Así que usted puede ver cómo se consigue esta circular. Como usted puede recopilar por ahora, soy un desarrollador, pero no un desarrollador de C++, y que venía de Python, la compilación es un mundo nuevo para mí. Cualquier y toda ayuda apreciado

  • g++ -Wall -c Metaphone3.cpp sólo debe ser la generación de Metaphone.o y no otra cosa
InformationsquelleAutor Pyderman | 2015-11-03

2 Comentarios

  1. 2

    Una educación conjetura: main es en Metaphone3ExampleCode.cpp. Se necesita compilar ambos, y el vínculo de los objetos resultantes juntos.

    Intentar

        g++ -c Metaphone3.cpp
    g++ -c Metaphone3ExampleCode.cpp
    g++ -o Methaphone Metaphone3.o Metaphone3ExampleCode.o

    o

        g++ -o Methaphone Metaphone3.cpp Metaphone3ExampleCode.cpp
    • Más probable, ya que es una «biblioteca» tipo de código, proporcionando funciones de utilidad. Es el usuario (es decir, usted) para hacer una aplicación con ellos. Eso es lo que la ExampleCode es para: para mostrar un ejemplo de aplicación.
    • Metaphone3.cpp probablemente no referencia principal. Sin embargo, todos los programas de C++ debe tener un main. Cuando intenta compilar un ejecutable, el compilador inserta en el código de arranque que inicializa el entorno y, a continuación, llama a su main función. Si usted no proporciona una función principal, a continuación, obtener el error que usted está viendo.
    • Derecho….
  2. 2

    metaphone3.cpp debe ser compilado para una .así que es una biblioteca y no una aplicación

    el código de ejemplo se proporciona como una guía y no pretende ser compilado

    si usted hace metaphone3.así, usted tendrá que hacer una aplicación de c++ a ti mismo enlace y prueba de

    • Tiene sentido ahora, gracias.

Dejar respuesta

Please enter your comment!
Please enter your name here