C/C++/Java/OC在终端下编译和运行(持续更新...)

  我们习惯了在各种IDE或者文本编辑器中进行代码编写,而一旦我们失去了IDE之后很多人就不知道怎么编译和运行我们的代码鸟。今天我们就来了解常用的几种编程语言如何在终端的下进行编译和运行。然后我们再简单的使用make命令来实现自动化编译和运行等操作。

  如果是在Mac下的话,首先我们需要先安装XCode,以及其Command line tool(命令行工具)。= =。传说OS X并没有附带GCC等命令行工具,其实对于开发来说装个XCode以及命令行工具还是很有必要滴。我们这里来个传送门-Xcode中Command Line Tools安装方法
接下来由于我们展示过程的代码很简单,所以我们文件生成和代码书写都是用终端完成(顺便学习学习常用命令哈哈哈哈)。其中编辑器使用Vim。

C/C++

首先我们不过多介绍GCC编译C语言的过程,给个传送门-gcc编译c语言程序

GCC编译C

生成.c.cpp文件,.c是C语言类型的文件,.cpp是C++的文件类型。此外它们的头文件都是.h

$ touch hello.c
$ touch helloCpp.cpp

然后我们通过Vim来进行文件的编辑,这里先在hello.c里写一段c语言代码。PS:首先我们按i进入编辑模式,然后开始写代码。最后再按ESC进入命令模式,输入:wq,保存并退出。(vim的使用这里不做过多说明)

#include <stdio.h>
int main(int argc, const char *argv[])
{
    printf("This is C, Hello world.\n");
    return 0;
}

然后我们执行指令编译.c文件,编译会生成一个hello.o文件。最后我们通过-o选项进行链接生成可执行文件,然后运行可以看到输出结果。

$ gcc -c hello.c
$ gcc hello.o -o hello
$ ./hello
This is C, Hello world.

其中编译和链接可以通过一行指令来完成。

$ gcc hello.c -o hello
$ ./hello
This is C, Hello world.

G++编译C++

虽然GCC也可以编译C++文件,但是使用G++(GCC用于编译C++的特殊版本)会更方便。首先我们可以直接通过g++ hellocpp.cpp来编译,但是会生成默认的a.out可执行文件,一般我们都通过-o选项对输出的可执行文件进行重命名操作。

$ g++ hellocpp.cpp -o hellocpp
$ ./hellocpp
This is C, Hello world.

当然也可以通过GCC来编译C++文件,只要在再加入链接库即可。比如我们的c++文件中内容如下:

#include <iostream>
using namespace std;

int main(int argc, const char *argv[])
{
    cout << "This is C++, Hello world.\n";
    return 0;
}

所以这样使用GCC进行编译。

$ gcc hellocpp.cpp -lstdc++ -o hellocpp
$ ./hellocpp
This is C++, Hello world

Java

我们需要编译java文件的话,需要机子上安装额JDK,幸运的是Mac一般都会自带了JDK,我们可以通过java -version当前机子上安装的版本信息。

$ java -version
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)

我们还是先创建一个Hello.java的文件,我们必须注意文件名和类名必须要一样!!!。在里面简单的输出一些信息,内容如下:

public class Hello
{
    public static void main(String[] args){
        System.out.println("This is java, Hello world.");
    }
}

然后我们通过javac指令编译源文件生成字节码.class文件,再通过java指令运行可程序。

$ javac Hello.java
$ java Hello
This is java, Hello world.

Objective-C

如果我们需要编译OC的源文件,我们需要用到clang指令(clang好像也可以编译C/C++代码?!)。我们还是先创建一个OC的源文件。

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
    @autoreleasepool{
        NSLog("This is Objective-C, Hello world.");
    }
    return 0;
}

然后我们使用clang指令进行编译,由于源代码中使用了自动释放池,故我们需要启用ARC机制。并且还需要引入Foundation框架。

$ clang -fobjc-arc -framework Foundation hello.m -o hello
$ ./hello
2016-02-09 15:14:50.952 hello[13588:2168336] This is Objective-C, Hello world.
  • -fobjc-arc 表示编译器需要支持ARC特性;
  • -framework Foundation 表示引用Foundation框架;
  • hello.m 为需要进行编译的源代码文件;
  • -o hello 表示输出的可执行文件的文件名;

Makefile

还在更新…

参考资料

  1. gcc编译c语言程序
  2. gcc编译C++程序
  3. Java编译那些事儿
  4. Objective-C学习备忘录:Clang编译器编译运行Objective-C代码

最新更新时间:2016.2.9