易截截图软件、单文件、免安装、纯绿色、仅160KB

C编译基础

int main(int argc,char *argv[])
argc(argument count):参数的个数;
argv(argument value):参数值
argv[0] :文件名
argv[1]:第一个参数,argv[2];第二个参数,以此类推。
编译C
1 单源程序到可执行程序
            编译               连接
源文件(.c)--------->目标文件(.o)------->可执行文件
 hello.c  -c     howdy        ./howdy
gcc -o:指定编译程序输出的可执行程序名
    -c:指示GCC去编译源代码,不再硬盘上留下目标文件,跳过第二步
2 多源文件到可执行文件
gcc -c src1.c src2.c ...
将n个源文件创建各自的目标文件
gcc scr1.c scr2.c ... -o scr
将N个程序编译成一个目标文件,并将他们连接到可执行程序src
3 预处理
gcc -E:指示编译程序只进行预处理操作
gcc -E hello.c -o hello.i 预处理后的代码放在不需要预处理的.i 文件中
4 生成汇编语言
gcc -S :指实编译器生成汇编代码
5 创建静态库
静态库是一些.o文件的几何,他们是由编译程序按照通常的方式生成的,将程序连接到苦衷的目标文件和将程序连接到目录中的目标文件是一样的,静态库(archive)由ar管理这些静态库
构造一个库,第一部是要编译库中的目标模块。
$gcc -c hellofirst.c hellosecond.c
建库
$ar -r libhello.a hellofirst.o hellosecond.o
编译并连接程序
$gcc twohellos.c  libhello.a -o twohellos
执行
$./twohellos
6 创建共享库(.so)
共享库是目标文件的几何,对象模块的每个地址(变量应用和函数调用)都是相对地址,不是绝对地址。允许在运行程序的时候,动态加在和执行共享模块
1 编译库中的对象模块
gcc -c -fpic shellofirst.c  shellosecond.c
fpic使得输出的对象模块是按照可重定位方式生成
2 构造共享库
gcc -shared shellofirst.o shellosecond.o -o hello.so
3  gcc stwohellos.c hello.so -o stwohellos
但是在执行时出现了:
./stwohellos
./stwohellos: error while loading shared libraries: hello.so: cannot open shared object file: No such file or directory
一开始我以为权限不够,可是 ls -l 显示,权限是足够的。
针对这种情况这样写
gcc


相关文档:

SQLite C/C++接口介绍

这篇文章是使用SQLite C/C++接口的一个概要介绍和入门指南。
由于早期的SQLite只支持5个C/C++接口,因而非常容易学习和使用,但是随着SQLite功能的增强,新的C/C++接口不断的增加进来,到现在有超过150个不同的API接口。这往往使初学者望而却步。幸运的是,大多数SQLite中的C/C++接口是专用的,因而很少被使用到。尽管有这 ......

C\C++菜鸟问题集1

代码:
#include  <iostream>
using namespace std;
class Clock
{
int hour, minute, second;
public:
   Clock(int h, int m, int s) //构造函数定义 ,无返回值类型
   {     
if(s<0) second=0;
       if (s& ......

c 语言中的static

1. static 变量
静态变量的类型 说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。 例如外部变量虽属于静态 存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。
2. 静态局部变量
静态局部变量属于静态存储方式,它具有以下 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号