coreBugZJ

此 blog 已弃。

Linux 下 Java 调用 shell 命令 nasm 与 gcc


    最近在写Pascal编译器,生成 nasm 汇编代码,需要调用 nasm 进行汇编,再调用 gcc 与 C 语言标准库链接,从而可以使用 C 语言的库函数。


 1 
 2                         String[] cmdAsm = new String[]{
 3                                 "nasm"
 4                                 fileName + ".asm"
 5                                 "-f",
 6                                 "elf32"
 7                                 "-o",
 8                                 fileName + ".o"
 9                         };
10                         Process child = Runtime.getRuntime().exec( cmdAsm );
11                         LineNumberReader errReader = new LineNumberReader(
12                                         new InputStreamReader(
13                                         child.getErrorStream()));
14                         String errInfo;
15                         while ( null != (errInfo = errReader.readLine())) {
16                                 System.err.println( errInfo );
17                         }
18                         child.waitFor();
19 
20                         String[] cmdLd = new String[]{
21                                 "gcc",
22                                 fileName + ".o",
23                                 "-o",
24                                 fileName
25                         };
26                         child = Runtime.getRuntime().exec( cmdLd );
27                         errReader = new LineNumberReader(
28                                         new InputStreamReader(
29                                         child.getErrorStream()));
30                         while ( null != (errInfo = errReader.readLine())) {
31                                 System.err.println( errInfo );
32                         }
33                         child.waitFor();
34 


    注意 "-o" 和 fileName 要分开为两个字符串,不然的话,nasm 没问题,但 gcc 会出错,链接器找不到输出文件。

    errReader 和 errInfo 用于输出 nasm 和 gcc 输出的错误信息。

posted on 2013-04-29 15:28 coreBugZJ 阅读(832) 评论(0)  编辑 收藏 引用 所属分类: LinuxProgrammingLanguage


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理