EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、vim知识 f(find)命令也可以用于移动,fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符。 D 删除当前字符至行尾。D=d$ :split或new 打开一个新窗口,光标停在顶层的窗口上 :split file或:new file 用新窗口打开文件 $ i/ S% ?) R d5 n& ]$ j
二、如何替换搜索第二个match的字符 sed –i ‘s/xxx/yyy/2’file
/ b. s$ U' W v. D# }三、gcc的知识 选项-c 用法:#gcc-c test.s 作用:将汇编输出文件test.s编译输出test.o文件。
$ U4 d$ Z/ h' v$ J* M y0 j" I无选项链接 用法:#gcctest.o -o test 作用:将编译输出文件test.o链接成最终可执行文件test。 ! o% C8 [& Q: I# l2 o o
分别编译各个源文件,之后对编译后输出的目标文件链接。 用法: #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
. q& l3 s/ {, C* }' _头文件 gcc在编译时怎么去寻找所需要的头文件:
1 l2 r: d$ j3 ?4 u1 Z; x% t( j/ }※所以heade RFile的搜寻会从-I开始 5 f) Z; Y( M# a% n& y) h0 S
※然后找gcc的环境变量C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
' m, h' K( O/ L0 ?; G※再找内定目录
$ Z9 d( D$ ?/ T; w/usr/include
: q1 n9 r! U' N$ a/usr/local/include
c% P5 `& b$ ], K" r h% U2 U/usr/lib/gcc-lib/i386-linux/2.95.2/include 9 `4 [% _! e! }" H/ p* t0 ^
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3 2 B. O( B* I) w3 ]3 |
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include 3 g0 N" l1 I @! y7 K
库文件 : K+ S" B, v9 I& U
编译的时候:
- z; _8 z8 v" V4 o' W9 |* b※gcc会去找-L
! ~5 |1 w/ t5 X2 o) ]! C' C※再找gcc的环境变量LIBRARY_PATH
' A5 h. @- `( d, ~; g6 H※再找内定目录/lib/usr/lib /usr/local/lib这是当初compilegcc时写在程式内的 6 P* a) h j3 ^, F% a
-Dmacro
3 a: W; }2 g1 N+ X& z' @5 ?' w相当于C语言中的#definemacro & M: w5 x0 U" O: g0 u
-Dmacro=defn 7 S) F# g6 O, r7 B5 ]& Z' F* S
相当于C语言中的#definemacro=defn 2 C+ Q7 G+ D' k g$ E
-Umacro + y: K, X5 V" g: x: @
相当于C语言中的#undefmacro
% b, z# y+ E1 c-undef
+ T) K/ H) D0 f9 L( K取消对任何非标准宏的定义 -Idir
- z8 R& | P% q# b* Q在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如
4 ]) C+ Z$ r9 ]1 Z A2 Y果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他 + c+ Z4 a# S( _5 F* B
回先在你所制定的目录查找,然后再按常规的顺序去找.
) z# [& ?1 j( u t7 A) z# T2 O对于#include<file>,gcc/g++会到-I制定的目录查找,查找不到,然后将到系统的缺
% A) X' m; I. ?$ G省的头文件目录查找 ; e( L5 R8 x% }# L
-I-
1 t0 A" Q# j+ Q* C就是取消前一个参数的功能,所以一般在-Idir之后使用 -g
+ `1 J( O% \/ h8 O只是编译器,在编译的时候,产生调试信息。 -static
% L2 J# F2 \+ w9 o) t此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么 8 f/ B7 O0 ?8 I2 C5 g
动态连接库,就可以运行. -share
S* X4 |) c, J: j2 L此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库. -w不生成任何警告信息。 ' t) ?, F F4 T0 I
-Wall生成所有警告信息。 无论静态库,还是动态库,都是由.o文件创建的。 静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们将创建的静态库名为myhello,则静态库文件名就是libmyhello.a。在创建和使用静态库时,需要注意这点。创建静态库用ar命令。 在系统提示符下键入以下命令将创建静态库文件libmyhello.a。 #ar cr libmyhello.a hello.o #gcc -o hello main.c -L. –lmyhello 2 i* Y( S4 g. Z+ i
动态库文件名命名规范和静态库文件名命名规范类似,也是在动态库名增加前缀lib,但其文件扩展名为.so。例如:我们将创建的动态库名为myhello,则动态库文件名就是libmyhello.so。用gcc来创建动态库。 在系统提示符下键入以下命令得到动态库文件libmyhello.so。 #gcc -shared -fPCI -o libmyhello.so hello.o
/ _6 L& W! ^2 n6 s, Z2 }, m |