在 UNIX系统下面,使用 cc 命令最常用的选项主要有如下几个(以 my_prog.c 为例进行说明)
$cc -c my_prog.c <cr> (-c 选项表示只编译、产生中间文件,不进行链接、并产生最终的可执行程序)
$cc my_prog.c <cr>(编译、链接,并产生缺省的可执行程序。缺省的可执行文件名为:a.out)
$cc -o my_runfile my_prog.c <cr>(-o 选项用于生成用户指定的可执行程序名,代替缺省的可执行文件名:a.out。这里的可执行文件名是:my_runfile)
至于说还有很多其他选项,例如:-L系统库名字(*.LIB)等,那就需要在平时的编程过程中去体会了。
另外,如果是在 Linux 系统下面进行 C 语言的开发,使用的是 gcc 编译器。其选项和 cc 编译器相同。
㈡ 如何在Linux中安装cc和gcc编译器
方法如下:
一:挂载yum源,在终端输入指令:mount -o loop xxxx.iso /media/CentOS/
说明:xxxx.iso 是你的镜像文件名(注意路径正确)
/media/Centos/ 这个是挂载后文件地址,Centos是自己建的,也可以自己选着路径;
二:修改/etc/yum.repos.d/CentOS-Media.repo
1.首先进入文件: vi /etc/yum.repos.d/CentOS-Media.repo
2.修改文件如下:
[c6-media]
name=CentOS-$releasever - Media #名字而已
baseurl=file:///media/Centos #刚刚挂载镜像的地址
gpgcheck=1
enabled=1
gpgkey=file:///etc/media/Centos/RPM-GPG-KEY-CentOS-6
3. 退出保存。
4.输入指令:gcc -v 看看有没有反应。
㈢ 为什么原子操作都起内存屏障的作用
(1) 进行零次或一次对齐内存访问的汇编指令是原子的。
(2) 如果在读操作之后、写操作之前没有其它处理器占用内存总线,那么从内存中读取数据、更新数据并把更新后的数据写回内存中的这些” 读—修改—写”汇编语言指令是原子的。当然,在单处理器系统中,永远都不会发生内存总线窃用的情况。
(3) 操作码前缘是lock字节的” 读—修改—写”汇编语言指令即使在多处理器系统中也是原子的。当控制单元检测到这个前缀时,就”锁定”内存总线,直到这条指令执行完成为止。因此,当加锁的指令执行时,其它处理器不能访问这个内存单元。
(4) 操作码前缀是一个rep字节的汇编语言指令不是原子的,这条指令强行让控制单元多次重复执行相同的指令。控制单元在执行新的循环之前要检查挂起的中断。
在你编写C代码程序时,并不能保证编译器会为a=a+1或甚至像a++这样的操作使用一个原子指令。因此,Linux内核提供了一个专门的atomic_c类型和一些专门的函数和宏(参见表5-4),这些函数和宏作用于atomic_t类型的变量,并当作单独的、原子的汇编语言指令来使用。在多处理器系统中,每条这样的指令都有一个lock字节的前缀。
㈣ makefile command的cc -c,cc -o是什么意思啊
CC
是一个全局变量,它指定你的Makefile所用的编译器,一般默认是gcc
你可以显示的指定,比如说
CC=gcc
-c
-o
都是gcc的参数
CC
-o相当于在中端中执行gcc
xx.c
-o
xx.o
想要了解更多makefile编写方法,可以下个文档看看,半天就能搞定。