【发布时间】:2020-09-22 12:20:26
【问题描述】:
我有一个生成 nasm 程序集的 C 程序。如何将其与 nasm 组装,然后将其与 ld 链接以生成最终的可执行文件?
最简单的方法是将编译器的输出通过管道传输到 nasm,但我希望该过程对用户来说简单:只需键入 compiler myfile 并获取可执行文件。即使我会走那条简单的路线,nasm 似乎也不接受来自标准输入的文件。您必须将它们指定为参数。
所以到目前为止我所做的是:将程序集输出到标准输出,在主进程的标准输出和子进程的标准输入之间创建一个管道,这个进程将调用nasm /dev/stdin。我在这里做错了什么?
【问题讨论】:
-
你能发布汇编和c代码以及你是如何组装/编译的吗?
-
有一个 nasm 功能请求 (sourceforge.net/p/nasm/feature-requests/31) 将文件名
-视为标准输入,但我认为它没有被接受。 -
上面的解决方案是我一直在想的,我不知道它是否有效,但最重要的是,这是做这种事情的正确方法吗?
-
我认为我提出的问题很糟糕,但我的主要问题不是“它是否有效”,而是“这样做的最佳方法是什么”。我已经搜索了好几个星期,但是很难找到关于这样一个具体问题的任何信息。我可以做的一件事是查看 GCC 的代码,但也许这里有人已经知道它是如何工作的。
-
将输出写入临时文件。将其作为输入提供给 nasm。删除临时文件。
标签: c linux compiler-construction pipe nasm