在Xcode中构建c++和汇编源代码
Building C++ and Assembly source in Xcode
我试图在OS X 10.9的Xcode中构建一个命令行应用程序,其中包含一个。cpp源文件,它使用在。asm汇编文件中外部定义的函数。c++代码:
#include <iostream>
using namespace std;
extern "C" void NOTHING();
int main(){
NOTHING();
return 0;
}
下面是汇编函数:
global NOTHING
section .text
NOTHING:
mov eax, 0
ret
这是一个程序,什么也不做,只是暂时将值0移到EAX寄存器中。在创建.asm源文件时,我确保选择了NASM程序集。当我点击"play"按钮去构建可执行文件时,Xcode只会提示构建失败,而没有说明原因。
我可以恢复到在命令行中完成所有操作,就像我在Linux上做的那样。然而,如果可能的话,我更愿意开始使用Xcode,因为它结合了许多工具,例如Git,到一个单一的应用程序进行开发。
EDIT:得到答案后,我决定放弃Xcode;命令行要简单得多。基于这个答案,我为将来访问这个问题的用户写了如下的makefile:
test: main.cpp asm.o
g++ -stdlib=libstdc++ main.cpp asm.o -o test
asm.o: asm.asm
nasm -f macho64 asm.asm -o asm.o
,它假定程序集文件是'asm. exe '。asm', c++ 'main.cpp',创建的可执行文件名为'test '。与答案一样,请确保.asm文件中的函数以下划线开头。
对于64位x86-64 Mach-O对象文件,需要指定-f macho64
-。正如您已经看到的,Mach-O(函数)符号以下划线作为前缀。因此,如果给出函数定义NOTHING
,则必须在程序集中提供全局_NOTHING
。
与"C"
联动的函数应指定为:void NOTHING (void);
相关文章:
- 在Linux中哪里可以找到互斥、未来等的源代码
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 难以理解某些人解决IOI问题的源代码
- 使用g++编译hdf5源代码
- 如何使用C++读取另一个程序中的源代码输出
- Poco FindMySql.cmake 无法找到 MySQL 源代码
- 为什么我的C++程序的程序集输出充满了 .ascii,没有汇编代码?
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- C++出现控制台错误.我无法识别源代码的问题
- 在 emscripten 网页汇编正在运行期间更新进度条?
- Qt Quick,如何更改 Ui 源代码?
- 为什么我们不编写可以处理C++标识符的汇编器和链接器?
- 在什么情况下,我想在 C/C++ 代码中使用内联汇编代码
- 我在区分源代码、目标代码、汇编代码和机器代码时感到困惑
- 是否可以将C / C++源代码转换为汇编
- 反汇编的 exe 文件包含比源代码多得多的代码
- arm汇编代码-理解cpp源代码的反汇编
- 在Xcode中构建c++和汇编源代码
- 将源代码与反汇编代码相匹配