Linux下如何编译并运行C程序

 GCC 支持了许多不同的语言,包括 C、C++、Ada、Fortran、Objective C,Perl、Python 和 Ruby,甚至还有Java

  Linux 内核和许多其他自由软件以及开放源码应用程序都是用 C 语言编写并使用 GCC 编译的。

  编译C++程序:

  -c 只编译不连接

  g++ file1 -c -o file1.o

  g++ file2 -c -o file2.o

  g++ file1.o file.o -o exec

  g++   -c   a.cpp   编译

  g++   -o   a   a.o   生成可执行文件

  也可以   g++   -o   a   a.cpp直接生成可执行文件。

  1. 编译单个源文件

  为了进行测试,你可以创建“Hello World”程序:

  #include <stdio.h>

  #include <stdlib.h>

  int main(int argc, char **argv)

  {

  printf(“Hello world!\n”);

  exit(0);

  }

  使用如下命令编译并测试这个代码:

  # gcc -o hello hello.c

  # ./hello

  Hello wordl!

  在默认情况下产生的可执行程序名为a.out,但你通常可以通过 gcc 的“-o”选项来指定自己的可执行程序名称。

  2. 编译多个源文件

  源文件message.c包含一个简单的消息打印函数:

  #include <stdio.h>

  void goodbye_world(void)

  {

  printf(“Goodbye, world!\n”);

  }

  使用gcc的“-c”标记来编译支持库代码:

  # gcc -c message.c

  这一过程的输出结果是一个名为message.o的文件,它包含适合连接到一个较大程序的已编译目标代码。

  创建一个简单的示例程序,它包含一个调用goodbye_world的main函数

  #include <stdlib.h>

  void goodbye_world(void):

  int main(int argc, char **argv)

  {

  goodbye_world();

  exit(0);

  }

  使用GCC编译这个程序:

  # gcc -c main.c

  现在有了两个目标文件: message.o 和 main.o 。它们包含能够被 Linux 执行的目标代码。要从这个目标代码创建Linux可执行程序,需要再一次调用 GCC 来执行连接阶段的工作:

  # gcc -o goodbye message.o main.o

  运行编译结果:

  # ./goodbye

  Goodbye, world!

  前面这些单独的步骤也可以简化为一个命令,这是因为 GCC 对如何将多个源文件编译为一个可执行程序有内置的规则。

  # gcc -o goodbye message.c main.c

  # ./goodbye

  Goodbye, world!

  3. 使用外部函数库

  GCC 常常与包含标准例程的外部软件库结合使用,几乎每一个 Linux 应用程序都依赖于由 GNU C 函数库 GLIBC。

  应用外部函数库的例子:

  #include <stdio.h>

  #include <stdlib.h>

  #include <math.h>

  #define MAX_INPUT 25

  int main(int agrc, char **argv)

  {

  char input[MAX_INPUT];

  double angle;

  printf(“Give me an angle (in radians) ==>”);

  if(!fgets(input, MAX_INPUT, stdin)){

  perror(“an error occurred.\n”);

  }

  angle = strtod(input, NULL);

  printf(“sin(%e) = %e\n”, angle, sin(angle));

  return 0;

  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值