编译C 

首先,程序编译过程有:

1.预处理(展开宏,头文件,检查代码是否有误)

2.编译(将.c转为汇编代码.s)

3.汇编(将汇编代码.s转为机器代码.o)

4.链接(将所有机器代码.o和库文件链接成一个可执行程序)

一般编译常常包括了:预处理,编译,汇编

在linux系统中,编译c使用gcc编译器,如下:

gcc -o  out     in1.c    in2.c    //gcc编译以及链接(对in1文件和in2文件进行编译生成out.bin文件,“-o”:表示生成可执行文件)
gcc -c in1.c in2.c -o out.o //gcc编译不链接(对in1文件和in2文件文件进行编译生成out.o文件,
“-c”:表示只生成*.o文件 第二个"-o":表示制定生成哪个.o文件)

(若只对单个文件编译及链接,也可以直接输入: gcc in.c, 系统默认编译生成a.out可执行文件)

若需要在arm板里运行,就需要在linux系统中使用arm-linux-gcc交叉编译才行:

arm-linux-gcc -o  out     in1.c    in2.c    //gcc编译以及链接(对in1文件和in2文件进行编译生成out.bin文件,“-o”:表示生成可执行文件)
arm-linux-gcc -c in1.c in2.c -o out.o // gcc编译不链接(对in1文件和in2文件文件进行编译生成out.o文件,
“-c”:表示只生成*.o文件 第二个"-o":表示指定生成哪个.o文件)
-I      //表示添加头文件位置

一般编译程序时,说找到不到某个头文件时,编译时直接加上"-I  该头文件目录",即可编译OK

-l                     //指定库文件,l后面紧跟库文件,比如数学库:-lm,对应着libm.so文件,只需要去掉lib和.so即可

编译程序时,一般说找不到某函数定义时,说不定就是没加库文件原因,比如找不到cos()函数定义,则编译时直接加上"-lm"即可

编译C++ 

方法和上面类似,使用g++编译器,只不过该编译器会自动链接C++库

注意:若需要c++11标准,需要gcc 4.8以上


以编译两个C文件(a.c和hello.c)为示例:

vi a.c                                 //编辑a.c , 它将被hello.c调用,前提是这两个文件必须在同一目录下

内容如下:

vi hello.c                          //编辑hello.c

内容如下:

gcc -o hello  hello.c  a.c               //gcc编译以及链接(对hello.c文件和a.c文件进行编译生成hello.bin文件,“-o”:表示生成可执行文件)

./hello                                   //运行hello.bin

效果如下所示:

linux下使用gcc编译运行C/C++程序的更多相关文章

  1. linux下使用gcc编译运行C程序

    gcc(GNU Compiler Collection)是Linux下最常用的C语言编译器,是GNU项目中符合ANSI C标准的编译系统,能够编译用C.C++和Object C等语言编写的程序.  在 ...

  2. 在linux下,查看一个运行中的程序, 占用了多少内存

    1. 在linux下,查看一个运行中的程序, 占用了多少内存, 一般的命令有 (1). ps aux: 其中  VSZ(或VSS)列 表示,程序占用了多少虚拟内存. RSS列 表示, 程序占用了多少物 ...

  3. 在Linux下使用gcc编译mesa文件报undefined reference to symbol 'sin@@GLIBC_2.2.5和DSO missing from command line两个错误的解决方案

    一.概述 在Linux系统下使用gcc编译用C语言写的mesa的示例程序. 环境:Ubuntu Server 18.04.1 二.问题的出现 在Ubuntu下安装好mesa所需的库文件,将目标文件从g ...

  4. 在Linux下用gcc编译hello world

    1. 确保Linux系统里已经装好了gcc 测试:输入gcc后是如下的结果就说明已经安装成功 2. 创建HelloWorld.c 使用 touch 创建一个空文件; 用vim编辑 按下A或者I 插入 ...

  5. 在ubunt14.04(linux)下利用cmake编译运行opencv程序

    今天在电脑上安装好了opencv环境,迫不及待的想写个程序来测试一下.但是在windows下我们用vs等集成开发工具.可是在linux下我们应该怎么办呢? 这里我们用了opencv推荐的cmake来编 ...

  6. C语言写了一个socket client端,适合windows和linux,用GCC编译运行通过

    ////////////////////////////////////////////////////////////////////////////////* gcc -Wall -o c1 c1 ...

  7. C语言写了一个socket server端,适合windows和linux,用GCC编译运行通过

    ////////////////////////////////////////////////////////////////////////////////* gcc -Wall -o s1 s1 ...

  8. 在Linux下使用gcc运行C语言程序

    Linux下使用最广泛的C/C++编译器是GCC,大多数的Linux发行版本都默认安装,不管是开发人员还是初学者,一般都将GCC作为Linux下首选的编译工具.本教程毫不犹豫地使用GCC来编译C程序. ...

  9. Linux下指定版本编译安装LAMP

    说明: 操作系统:CentOS 6.5 64位 需求: 编译安装LAMP运行环境 各软件版本如下: MySQL:mysql-5.1.73 Apache:httpd-2.2.31 PHP:php-5.2 ...

随机推荐

  1. REdis AOF文件结构分析

    REdis-4.0之前的AOF文件没有文件头,而从REdis-4.0开始AOF文件带有一个文件头,文件头格式和RDB文件头相同. REdis-4.0版本,如果开启aof-use-rdb-preambl ...

  2. windows10环境下安装Tensorflow

    1.什么是tensorflow TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着 ...

  3. linux 修改用户密码的几种方法

    1.passwd 命令,手动修改: [root@localhost testuser]# passwd testuser Changing password for user testuser. Ne ...

  4. day11_雷神_udp、多进程等

    day11 1.网络编程 1.1 udp协议 client端 import json import socket server_addr = ('127.0.0.1',9090) sk = socke ...

  5. 如何在html与delphi间交互代码

    [转]如何在html与delphi间交互代码 (2015-11-19 22:16:24) 转载▼ 标签: it 分类: uniGUI uniGUI总群中台中cmj朋友为我们总结了如下内容,对于利用de ...

  6. 背水一战 Windows 10 (66) - 控件(WebView): 监听和处理 WebView 的事件

    [源码下载] 背水一战 Windows 10 (66) - 控件(WebView): 监听和处理 WebView 的事件 作者:webabcd 介绍背水一战 Windows 10 之 控件(WebVi ...

  7. PHP中字符串与html相互转化函数

    在一般通信过程中,可能会遇到文档文本编码中所不包括很多字符,或者无法在键盘上输入的字符.例如,版权符号(©).分币符号(¢)和语法重音符号等就属于这种字符.为了克服这些缺点,专门设计了一组统一的按键编 ...

  8. js函数式编程——蹦床函数

    概述 这是我在学习函数式编程的时候,关于递归,尾递归,相互递归和蹦床函数的一些心得,记下来供以后开发时参考,相信对其他人也有用. 参考资料:JavaScript玩转Clojure大法之 - Tramp ...

  9. ubuntu环境下编译linux内核问题解决备忘

    在使用比较新的gcc编译内核时,经常遇到这个问题: 问题一: 提示: mkimage" command not found - U-Boot images will not be built ...

  10. cracking the coding interview系列C#实现

    原版内容转自:CTCI面试系列——谷歌面试官经典作品 | 快课网 此系列为C#实现版本 谷歌面试官经典作品(CTCI)目录   1.1 判断一个字符串中的字符是否唯一 1.2 字符串翻转 1.3 去除 ...