建筑x86_64的未定义符号:... "_main" ,引用自:主可执行文件的隐式入口/启动
Undefined symbols for architecture x86_64: ... "_main", referenced from: implicit entry/start for main executable
牦牛剃毛警报。
虽然我无法显示任何源代码,但我认为,如果写得好,我可能能够提供足够的信息来获得帮助。我在下面尝试的步骤都是从其他帖子中获得的,现在有点循环了。
我在操作系统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
- Metaphone 3示例代码.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,编译世界对我来说是一个新的世界。任何和所有的帮助都感谢
一个有根据的猜测: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
隐喻3.cpp应该编译为.so-它是一个库,而不是应用程序
示例代码是作为指南提供的,不打算编译
如果你制作了metapne3.so,你需要自己制作一个c++应用程序来链接到它并测试它
如果其他人在谷歌搜索中偶然发现这一点,我会因为一个简单的打字错误而收到上面的错误:maint()
而不是main()
smh
相关文章:
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- CMake:如何将库 A 链接到库 B,然后将可执行文件链接到库 A
- 如何使字符串出现在编译的二进制可执行文件的开头?
- 程序在使用 system() 启动另一个可执行文件时停止
- 如何更改使用 CPack 安装的可执行文件的名称?
- 在Linux上使用Clang / OLLVM交叉编译helloworld Windows可执行文件时的问题
- CMake:我们可以为一组不形成可执行文件或库的特定文件指定包含目录吗?
- 如何将图像传入C++可执行文件并将输出图像存储在新目录中?
- 共享库 (.so) 没有扩展名的 Linux 可执行文件之间的区别?
- 如何在 linux 可执行文件中使用静态库
- 错误:当我从"WinDbg"打开可执行文件时,找不到符号文件。默认导出 ntdll 的符号.dll
- 编译的C可执行文件被Windows defender检测为病毒
- Linux 可执行文件通过 dlopen 在emplace_back崩溃打开共享库
- 是否可以在命令行中将输入参数传递给可执行文件
- 如何更改 c++ 文件的 mach-o 可执行文件的入口点?
- C++可执行文件继续寻找序号入口点
- 生成文件问题(体系结构x86_64的未定义符号:"_main",引用自:主可执行文件的隐式入口/启动)
- 建筑x86_64的未定义符号:... "_main" ,引用自:主可执行文件的隐式入口/启动
- 如何恢复windows可执行文件的原始入口点