EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、vim知识 f(find)命令也可以用于移动,fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符。 D 删除当前字符至行尾。D=d$ :split或new 打开一个新窗口,光标停在顶层的窗口上 :split file或:new file 用新窗口打开文件
$ y2 Y! {8 D! o$ @) y二、如何替换搜索第二个match的字符 sed –i ‘s/xxx/yyy/2’file
1 `6 Z5 d( L" z: ?- A) }$ ^三、gcc的知识 选项-c 用法:#gcc-c test.s 作用:将汇编输出文件test.s编译输出test.o文件。 : ^4 E. y7 k P1 ^: X ~( q! c
无选项链接 用法:#gcctest.o -o test 作用:将编译输出文件test.o链接成最终可执行文件test。
{0 l5 s7 T" ?5 O) E D分别编译各个源文件,之后对编译后输出的目标文件链接。 用法: #gcc-c testfun.c //将testfun.c编译成testfun.o #gcc-c test.c //将test.c编译成test.o #gcc-o testfun.o test.o -o test //将testfun.o和test.o链接成test
/ G# P/ Z; Z3 c7 W B头文件 gcc在编译时怎么去寻找所需要的头文件: " T( T7 S3 {% l8 k, S( X
※所以heade RFile的搜寻会从-I开始
3 u. y7 u: P0 P; a2 s) R※然后找gcc的环境变量C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
2 e. G: ^5 v+ U* A9 ^; f8 S5 [※再找内定目录
! k0 F; k1 W3 F" s( D5 f/usr/include
: l& ?9 w2 q% x9 k$ |, n/usr/local/include ' t& R' m' D- T+ |/ U5 Y
/usr/lib/gcc-lib/i386-linux/2.95.2/include
: B, q' y6 g) R- \' H3 j0 y: @/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
$ P+ n: \9 h3 d3 x/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include
2 h' I7 ^# X0 [2 `库文件 * ~: b2 r' U: W9 |5 [
编译的时候:
& ~- j+ v2 W9 l+ }- F0 L※gcc会去找-L 5 u# _! ~* K: a$ v) M* e. @, h" m
※再找gcc的环境变量LIBRARY_PATH . _* A. w; v9 u1 n; r
※再找内定目录/lib/usr/lib /usr/local/lib这是当初compilegcc时写在程式内的 5 e& {( g/ k- g# ]# n: E" F
-Dmacro % Z% e! J4 F) j7 b
相当于C语言中的#definemacro
% z$ {$ z, a- \4 {4 D' U-Dmacro=defn 6 y2 r" F3 M# ]8 z% f; Y+ @1 V
相当于C语言中的#definemacro=defn
' f( ~3 c! E5 u1 ~0 f) U/ g4 N9 q-Umacro
5 d3 N4 Y! A4 B1 G: Q相当于C语言中的#undefmacro 2 \' i+ a+ ]/ j/ P) l# s
-undef
/ V$ \, a6 o* \5 n" d+ \% a取消对任何非标准宏的定义 -Idir 6 g$ p5 K; _" J1 f" r
在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如 T" x( W9 W0 A" S: x( |& q: n
果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他 + v5 x6 J5 h. [8 p) T3 ~( }, X" G
回先在你所制定的目录查找,然后再按常规的顺序去找.
$ R R% A6 S! y4 J对于#include<file>,gcc/g++会到-I制定的目录查找,查找不到,然后将到系统的缺 9 U8 x5 M! `# t. w5 d
省的头文件目录查找
% h% m( p/ A* Q0 G4 X* e-I-
0 j' M& H/ ^/ x( Z' j" y) Z. w就是取消前一个参数的功能,所以一般在-Idir之后使用 -g . e1 V, k3 ?4 u- g* I- f. i* A
只是编译器,在编译的时候,产生调试信息。 -static
1 {) f$ _: Z8 z6 \3 h) w此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么 ) z# h3 n# t& Y0 p; W
动态连接库,就可以运行. -share " f. z' K8 c- V1 W6 V7 q7 y- N
此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库. -w不生成任何警告信息。 3 g8 {+ j) B' p; X P6 e7 [: Y
-Wall生成所有警告信息。 无论静态库,还是动态库,都是由.o文件创建的。 静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们将创建的静态库名为myhello,则静态库文件名就是libmyhello.a。在创建和使用静态库时,需要注意这点。创建静态库用ar命令。 在系统提示符下键入以下命令将创建静态库文件libmyhello.a。 #ar cr libmyhello.a hello.o #gcc -o hello main.c -L. –lmyhello
! A3 {! F: l, F( p7 I动态库文件名命名规范和静态库文件名命名规范类似,也是在动态库名增加前缀lib,但其文件扩展名为.so。例如:我们将创建的动态库名为myhello,则动态库文件名就是libmyhello.so。用gcc来创建动态库。 在系统提示符下键入以下命令得到动态库文件libmyhello.so。 #gcc -shared -fPCI -o libmyhello.so hello.o 3 K6 @. v1 O2 Z1 m% H
|