编译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程序的更多相关文章

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

    编译C  首先,程序编译过程有: 1.预处理(展开宏,头文件,检查代码是否有误) 2.编译(将.c转为汇编代码.s) 3.汇编(将汇编代码.s转为机器代码.o) 4.链接(将所有机器代码.o和库文件链 ...

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

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

  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. 在linux下安装eclipse以及运行c++程序的安装步骤

    1.       下载jre,eclipse,cdt 其中jre是java运行环境,eclipse需要先装jre,才可能运行,cdt是在eclipse中运行c\c++程序的插件. 下载jre 网址是: ...

  6. 如何在linux下安装jdk并运行java程序

    一.进入root 大家可以看到我这里用的是CentOS 6.5 系统 二.测试网络与YUM是否可用 1.测试网络 ping www.baidu.com,如下图就是通了 参考: 一.JDK安装1.lin ...

  7. Linux下开发Windows平台运行的程序 - MinGW

    开源不乏神人,于是有了MinGW(Minimalist GNU for Windows),又称mingw32,是将GCC编译器和GNU Binutils一直到Win32平台下,包含一系列头文件.库和可 ...

  8. Ubuntu下编辑并编译运行c++程序

    一.使用vim编辑c++代码: vim hello.cpp 输入如下代码: #include <iostream> using namespace std; int main() { co ...

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

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

随机推荐

  1. c++ STL 容器——序列

    STL中11个容器类型分别是deque,list,queue,priority_queue,stack,vector,map,multimap,set,multiset,bieset(在比特级处理数据 ...

  2. Web安全测试——威胁攻防

    SQL注入 部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL In ...

  3. NYOJ 25 A Famous Music Composer

    A Famous Music Composer 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 Mr. B is a famous music composer. O ...

  4. 以太网帧、TCP与UDP段以及IP数据报格式总结

    传输层及其以下的机制由内核提供,是操作系统的一部分,应⽤层由⽤户进程提供应⽤层数据通过协议栈发到⽹络上时,每层协议都要加上⼀个数据⾸部(header),称为封装.不同的协议层对数据包有不同的称谓,在传 ...

  5. Oracle 11.2.0.1 ADG环境MRP进程遭遇ORA-600异常终止

    环境:Linux + Oracle 11.2.0.1 ADG 现象:发现备库没有应用日志 1. 数据库查询备库目前状态 发现备库目前没有应用日志,apply lag已经显示备库有3天21小时多没有应用 ...

  6. linux C语言处理正则表达式

    Linux下C语言处理正则表达式——regex.h 具体函数介绍 编译正则表达式函数 int regcomp(regex_t *preg, const char *regex, int cflags) ...

  7. 《Java从入门到放弃》入门篇:springMVC数据校验

    昨天我们扯完了数据传递,今天我们来聊聊数据校验的问题.来,跟着我一起读:计一噢叫,一按艳. 在springMVC中校验数据也非常简单,spring3.0拥有自己独立的数据校验框架,同时支持JSR303 ...

  8. 扩展Python模块系列(二)----一个简单的例子

    本节使用一个简单的例子引出Python C/C++ API的详细使用方法.针对的是CPython的解释器. 目标:创建一个Python内建模块test,提供一个功能函数distance, 计算空间中两 ...

  9. oracle 11gR2 RAC安装手册

    --oracle 11gR2 RAC安装手册 -----------------------------2013/10/29 参考三思笔记 http://files.cnblogs.com/jackh ...

  10. GitHub Student Developer Pack创建个人网站

    链接:https://zhuanlan.zhihu.com/p/20531579 这个开发包里有什么?作为学生开发者,如何最大化利用它的价值? Atom编辑器,GitHub推出的编辑器,和Sublim ...