Неопределенные символы для архитектуры x86_64: … & quot; _main & quot; ссылка на: неявная запись / запуск для основного исполняемого файла

Як-стружечная оповещения.

Хотя я не могу отображать любой исходный код, я полагаю, что хорошо написанным постом я могу предоставить достаточно информации, чтобы получить помощь. Все шаги, которые я попробовал ниже, были получены из других постов, и теперь они становятся немного круглыми.

Я на OS X со следующим:

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

Итак, мне дано три файла:

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

Я пытаюсь скомпилировать с g ++:

g++ Metaphone3.cpp

Я получил:

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 и clang ++ сообщают одно и то же.
  • Добавление -m32 не имеет никакого влияния.
  • g++ Metaphone3.cpp -I /usr/local/include не имеет никакого эффекта

Если я попробую:

g++ -Wall -c Metaphone3.cpp

Это избавляет от предупреждения и Metaphone3.o а также Metaphone генерироваться.

Если я попытаюсь выполнить:

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

Еще несколько исследований показывают, что я, возможно, пропустил шаг связывания. Так:

gcc Metaphone3.o -o Metaphone3

Но это возвращает меня к первоначальной ошибке.

Другие посты потом предлагают отбросить -c флаг, но именно этот флаг позволил мне передать ошибку. Таким образом, вы можете видеть, как это становится круговым. Как вы, наверное, уже поняли, я разработчик, но не разработчик C ++, и, исходя из Python, мир компиляции является для меня новым. Любая помощь приветствуется

0

Решение

Образованное дикое предположение: main в Metaphone3ExampleCode.cpp, Вам нужно скомпилировать оба и связать полученные объекты вместе.

Пытаться

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

или же

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

Другие решения

metaphone3.cpp должен быть скомпилирован в .so — это библиотека, а не приложение

пример кода приведен в качестве руководства и не предназначен для компиляции

если вы создаете metaphone3.so, вам нужно создать приложение на c ++, чтобы связать его и протестировать

2

По вопросам рекламы [email protected]