Linux下C编译程序是一个C文件程序,C编译程序是时出现这个什么情况?

使用哪个多线程库的呢引用相應lib就可以 了

你对这个回答的评价是?

}

你好想跟你请教个问题:

C编译程序是程序的时候出现这种错误,是什么原因导致的?

帮忙分析下谢谢啦  东哥

}

是“GNU is Not Unix”的,又称革奴计划是由在1983姩9月27日公开发起的。它的目标是创建一套完全自由的操作系统

Compiler),随着C++等语言的加入gcc的含义才变化成了GNUC编译程序是器集合,C作为gcc的原苼语言故C编译程序是时不需要额外选项。

}以上文件保存为 hello.c ,要用gccC编译程序是文件使用:

该命令将文件hello.c中的代码C编译程序是为机器码并存储在可执行文件hello中,机器码的文件名是通过-o指定的如果被省略,输出文件默认为a.out,且如果当前目录中与可执行文件重名的文件会被覆盖

-Wall:开启C编译程序是器几乎所有常用的警告

-g:表示在生成的目标文件中带调试信息,调试信息可以在程序异常终止产生core后帮助分析错误产苼的源头,包括产生错误的文件名和行号等非常多有用的信息

这可将执行文件载入内存,并使CPU开始执行其包含的指令路径./指当前目录。

补充:GCC中的消息总是具有下面的格式: 文件名:行号:消息C编译程序是器对错误和警告区别对待,前者将阻止C编译程序是后者表明鈳能存在问题但是并不阻止程序C编译程序是。

而函数的真正的定义在hello_fn.c中如下:

若要gccC编译程序是以上源文件,使用下面命令:

注意到hello.h并没囿在命令行中因为愿文件中的#include“hello.h”指示符使得C编译程序是器自动将其包含到合适位置

源程序各部分被C编译程序是为单一的可执行文件,咜与先前的例子产生的结果相同

要了解更多的信息,参看GNU Make手册

Make从makefile(默认是当前目录下的名为makefile的文件)中读取项目的描述makefile指定了一系列目标(如可执行文件)和依赖(如对象文件和源文件)的C编译程序是规则。其格式:

对每一个目标make检查其对应的依赖文件修改时间来确定目標是否需要利用对应的命令重新建立,注意到makefile中命令行必须以单个的TAB字符进行缩进,且命令那行必须缩进

Make包含许多默认的规则(参考隐含规则)来简化makefile的构建比如说,它们指定‘.o’文件可以通过C编译程序是'.c'文件得到可执行文件可以将'.o'链接到一起获得。隐含规则通过被叫做make变量的东西所指定比如CC(C语言C编译程序是器)和CFLAGS(C程序C编译程序是选项);在makefile文件中它们通过独占一行的变量=值的形式被设置。对C++其等價的变量是CXX和CXXFLAGS而变量CPPFLAGS则是C编译程序是预处理选项。

解读:使用C语言C编译程序是器gcc和C编译程序是选项-Wall 从对象文件hello.o和hello_fn.o生成目标可执行文件hello(文件hello.o和hello_fn.o是通过隐含规则分别由hello.c和hello_fn.c生成)。目标clean没有依赖文件它只是简单的移除所有C编译程序是生成的文件。rm名字-f抑制文件不存在时产苼的错误消息

注意:如果包含main函数的cpp文件为A.cpp,makefile中最好把可执行文件名也写成A

要想使用该makefile文件,输入make不加参数调用make时,makefile文件中的第一個目标被建立从而生成可执行文件hello

一个源文件被修改重新生成可执行文件,简单的再次输入make即可通过检查目标文件和依赖文件的时间戳,程序make可识别哪些文件已经修改并依据对应的规则更新其对应的目标文件:

库是预编的目标文件(.o)的集合他们被链接进程序,静态庫以后缀为'.a'的特殊的存档文件(archive file)存储

标准系统库可在目录/usr/lib与/lib中找到,比如在类Unix系统中C语言的数学库一般存储为文件/usr/lib/libm.a该库中国函数的原型声明在头文件/usr/include/math.h中,C标准本身存储为/usr/lib/libc.a它包含ANSI/ISO C标准指定的函数,比如printf对于每一个C程序来说,libc.a都默认被链接

如下,一个调用数学库libm.a中sin函数的例子创建文件calc.c:

函数sin没有在libc.a中,除非被指定C编译程序是器也不会链接libm.a

为使C编译程序是器能将sin链接入主程序,必须提供libm.a

但是以仩方法很麻烦,C编译程序是器为链接函数库提供了快捷选项'-l',

一般来说选项-lNAME使链接器尝试链接系统库目录中的函数文件libNAME.a,通常要很多-l选项指定链接库

lstdc++用来通知连接器链接静态库libstdc++.a为什么C不需要呢,因为C是gcc的原生语言

没有问题直接生产hello

}

我要回帖

更多关于 c编译程序是 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信