【发布时间】:2019-12-30 00:26:26
【问题描述】:
在Linux 上运行CLion,我一直在尝试让.asm 文件正常工作。这就是我的测试项目的样子(它在Windows/Mac 上工作100%,只需要在.asm 文件中添加.intel_syntax)。
安装了NASM Assembly Support 插件。
main.c:
#include <stdio.h>
extern long tes(long);
int main() {
printf("%ld", tes(5));
printf("Hello, World!\n");
return 0;
}
tes.asm:
.text:
.global tes
tes:
mov rax, edi
ret
CMakeLists.txt:
cmake_minimum_required(VERSION 3.15)
project(Testt C)
enable_language(C ASM)
set(CMAKE_C_STANDARD 99)
set ( SOURCES
main.c
tes.asm)
add_executable(program ${SOURCES} )
如何配置CLion 以便在C 中使用tes 作为方法?我期待tes(x) = x,但不知何故,我的项目没有编译:
====================[ Build | program | Debug ]=================================
/snap/clion/99/bin/cmake/linux/bin/cmake --build /home/user/CLionProjects/Testt/cmake-build-debug --target program -- -j 4
make: *** No rule to make target 'program'. Stop.
感谢任何帮助!
【问题讨论】:
-
我知道你没有问过这个问题,也没有问到那么远,但是为了将来参考:由于多种原因,你的代码不会与
nasm组装在一起。 -
感谢您告诉我,我很困惑,因为它今天在 Windows 和 Mac 上完美运行。为什么它不起作用?您如何建议集成 .asm 文件?
-
很遗憾,我无法为您提供 cmake 方面的帮助。但
.global不是 nasm 语法(删除前导点),mov rax, edi由于寄存器大小不同而无效。.text:也是一个标签,您可能是指section .text(但无论如何这是默认值)。 -
我试过了,还是不行。不过,它可以在 Mac 上运行。
-
您不需要启用 C,因为无论如何它都已启用。
标签: c assembly cmake x86-64 clion