我想研究一个obj
文件的细节,我已经制作了一个main。S
文件,当我用作主文件时。S
我得到一个 a.out 文件作为回报,该文件可以直接使用 ./a.out
和 ld -m elf_x86_64 a.out
会产生错误。
我想生成一个对象文件,其文件类型与clang-cmain.c
的结果相同。我该怎么做?
我可能混淆了操作,导致错误的解释。由于
不生成可执行文件,因此可执行文件是 CLANG 的结果。感谢所有回答者,很抱歉造成混乱,浪费了您的时间。
最简单的方法,使用< code > clang-v-fno-integrated-as-c main . c 并从其输出中获取gas命令行。
作为 -o foo.o foo.s
如果您有 .S
,通常这意味着您希望在组装之前通过 C 预处理器运行它。gcc
和 clang
前端将为您做到这一点:gcc -c foo。S
(默认输出文件名 foo.o,而不是 a.out)。如果您的 .S
实际上没有任何像 #if
或 #define
这样的 CPP 指令,但是,您可以使用 as
组装它。
a.out
是作为
输出的默认名称,但它是一个目标文件,就像您从gcc-c foo. s
中获得的一样,而不是链接的可执行文件!GNU Binutilsas
不生成链接的可执行文件。
(不带 -c
的 ld foo.o
或 gcc
/ clang
的默认输出文件名也是 a.out,但不要被这个名字所迷惑。
您可以使用 gcc -v -c foo.s
来显示它使用的 as
命令行,包括 -o
选项。(Clang 有一个内置的汇编程序,所以它不会运行单独的 as
命令,但 GCC
前端确实只是运行以
组装 ASM 源文件。如果没有 -c
,则运行 ld
(通过 collect2)将目标文件链接到可执行文件中。
例如,在我的x86-64 GNU/Linux系统上:
$ cat > foo.s
mov $231, %eax # __NR_exit_group
syscall
$ as foo.s
$ file a.out
a.out: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
$ ld a.out -o exit
ld: warning: cannot find entry symbol _start; defaulting to 0000000000401000
$ ls -l exit a.out
-rw-r--r-- 1 peter peter 664 Mar 22 08:23 a.out
-rwxr-xr-x 1 peter peter 4632 Mar 22 08:23 exit
$ file exit
exit: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
$ ./a.out
bash: ./a.out: Permission denied
$ ./exit
$ strace ./exit
execve("./exit", ["./exit"], 0x7ffc72823fc0 /* 55 vars */) = 0
exit_group(0) = ?
+++ exited with 0 +++
$ as --version
GNU assembler (GNU Binutils) 2.35.1
...
This assembler was configured for a target of `x86_64-pc-linux-gnu'.
$ ld --version
GNU ld (GNU Binutils) 2.35.1
...
问题内容: 我想为Java的玩具语言编写一个编译器。我想生成可运行的.class文件。我想知道执行此操作的最佳库或工具是什么?我知道我可以学习所有指令的二进制格式并建立自己的常量池等,但这似乎应该已经完成:没必要重新发明轮子,对吗? 在线搜索我发现了两种不同的Java汇编语言Jasmin和Jamaica,但是只有Jasmin看起来有所维护。 是否存在用于将字节码写入流的Java库?这是Apac
问题内容: 如何做到这一点? 如果我想分析某些东西是如何编译的,我将如何获取发出的汇编代码? 问题答案: 使用该选项来gcc(或g ++)。 这将在helloworld.c上运行预处理器(cpp),执行初始编译,然后在运行汇编器之前停止。 默认情况下,这将输出一个文件。仍可以使用该选项设置输出文件。 当然,这只有在您拥有原始来源的情况下才有效。如果仅具有结果对象文件,则可以通过设置选项(或-d缩写
JDBC教程建议使用对象来获得数据库连接,而不是使用类。要引用“连接数据源对象”页面,请执行以下操作: 获取数据源连接的首选方式。 如何为到Postgres的JDBC连接获取这样的对象?我有一个JDBC驱动程序。 现在,我不想像这样摆弄JNDI。 我可以在我的Java应用程序中以编程方式实例化吗?或者我必须自己实现那个接口?
我已经从容器A复制了一个文件1.txt到容器b。 我还能够获得复制文件的完整URL,并能够在相同的浏览器选项卡中打开它,只要容器是公共的。 现在我正在使我的容器私有..我希望有一个简单的API可以给我SAS URL 有没有这样的API?
问题内容: 有没有人使用基于Java的库来生成excel文档?最好支持2003年? 问题答案: 我目前正在使用非常全面的Apache POI(http://poi.apache.org/index.html)。2003文件格式版本仍处于beta版本,但似乎运行良好。我并没有很好地利用它的功能,只是对Excel进行简单的读写,但这似乎是可靠的。
注意:我知道我可以通过导航到/{documentname}/swagger.json来访问和查看swagger文档,但这不允许我更改它