【vc++精品源码栏目提醒】:网学会员为广大网友收集整理了,【精品】cc编译 - 其它资料,希望对大家有所帮助!
cc/gcc编译、proc编译 自动编译——makeCC/GCC编译的过程 输入文件 .o .c .s .a 预处理 编译程序 汇编程序 链接程序 cpp cc/gcc as ld .s .o a.out 输出文件cc/gcc的基本用法 直接生成可执行文件 gcc –o outfile infile.ccc/gcc的基本用法 生成可执行文件链接外部库 gcc –o outfile infile.c –lsocket -lm -socket表示链接标准的网络libsocket库 系统在/usr/lib目录中查找libsocket.a -m表示链接标准的数学libm库系统在 /usr/lib目录中查找libm.acc/gcc的基本用法 非标准库的链接 使用-L选项指定搜索目录 Gcc –o outfile –L/mydir/lib -lmylibcc/gcc的基本用法 编译生成目标代码但不链接成执行文件 gcc –c filename.c 输出filename.occ/gcc的基本用法 生成可执行文件时链接外部函数 gcc –o outfile infile.c file_a.o file_b.occ/gcc的常用选项 指定加入调试信息 -g gcc –g –o outfile infile.c 加入调试信息后可以用gdb、adb、dbx 等源代码调试工具进行源代码级的调试cc/gcc的常用选项 指定非标准包含文件的搜索路径 -I Gcc –o outfile –I /mydir/include infile.c 系统标准的包含文件路径为/usr/include 用户自己定义的包含文件存放路径可通 过-I指定一个常见的cc/gcc编译过程 1、gcc –g –c file1.c file2.c –I . –I /mydir1/include –L /mydir1/lib –lm – lmylib 2、gcc –g –o exefile file3.c file1.o file2.o –I /mydir2/include –I . –L /mydir2/lib -L . –lmylib2 -lsocketProc的编译 Proc是Oracle提供的数据库应用程序专 用C语言接口开发工具使用它能够在 c/c程序中嵌入SQL语句 Proc使用预编译技术: .pc proc .c proc exefileProc应用程序开发的步骤 1、使用文本编辑器UltraEdit、EditPlus、vi、 notepad…建立Proc源程序,源程序以.pc做 为文件扩展名; 2、运行proc预编译器将.pc的源程序预编译为c 源程序 3、使用cc/gcc/vc等c编译器将c源程序编译为 目标文件 4、链接目标文件和proc系统库libclntsh生成 可执行文件常用的proc参数 proc inameinfile.pc onameoutfile.c userid user_name/passwddatabase iname 指定.pc的源文件名可以带路径 oname 指定预编译后输出的.c文件名可 以带路径 Userid指定预编译时连接数据库的用户名 /口令数据库利用make进行自动编译 make是一个将多步手工完成的编译过程 进行自动处理的工具; make程序读取一个makefile文件该文件 包含一组说明如何编译各模块,如何链 接各模块、系统库及用户库并生成最终 执行程序的指令;一个最简单的makefile cat makefileA very simple makefilegcc –o execfile infile.c 编译方法: make –f makefilemakefile中的相关性gcc –c file1.c file2.c file3.c生成file1.o 、file2.ogcc –o exefile1 file1.o file2.ogcc –o execfile2 file1.o file3.o这里:exefile1依赖于目标文件file1.o、file2.oexefile2依赖于目标文件file1.o、file3.omakefile中的相关性 一个具有相关性的makefile文件 cat makefile gcc –c file1.c file2.c file3.c –L /mydir -lmylib gcc –c file4.c –L /mydir –L /mydir2 –lmylib1exefile1:file1.o file2.o gcc –o exefile1 file1.o file2.oexefile2:file1.o file3.o file4.o gcc –o exefile2 file1.o file3.o file4makefile中的宏定义 cat makefileLIBPAH-L /. –L /home/tuxedo/lib –L /home/oracle8/lib –L /mylibINCPATH -I . –I/home/tuxedo/include –I /home/oracle8/includeUSERbill/billhbyd proc inamefile1.pc onamefile1.c sqlcheckfull USER gcc –c file1.c file2.c file3.c LIBPATH INCPATHexefile1:file1.o file2.o gcc –o exefile1 file1.o file2.oexefile2:file1.o file3.o gcc –o exefile2 file1.o file3.omakefile中的缺省编译规则 cat makefile .SUFFIXES: .pc .c .o LIBPATH -L . –L /usr/tuxedo/lib INCPATH -I . –I /usr/tuxedo/include USERIDbill/billhbyd .pc.o: proc iname.pc oname.c sqlcheckfull USERID gcc –o .o –c .c LIBPATH INCPATH .c.o gcc –o .o –c .c LIBPATH INCPATH exefile1:file1.o file2.o gcc –o exefile1 file.o file2.o exefile2:file1.o file3.o gcc –o execfile2 file1.o file3.o利用缺省规则生成执行文件 源文件: file1.pc、file2.c、file3.c 生成exefile1 make –f makefile exefile1 生成exefile2 make –f makefile exefile2