EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、vim知识 f(find)命令也可以用于移动,fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符。 D 删除当前字符至行尾。D=d$ :split或new 打开一个新窗口,光标停在顶层的窗口上 :split file或:new file 用新窗口打开文件
7 U& A9 {1 {' |0 \. }+ e3 m二、如何替换搜索第二个match的字符 sed –i ‘s/xxx/yyy/2’file
8 A& p$ @* O+ r- R* O& S- P: [6 b! i三、gcc的知识 选项-c 用法:#gcc-c test.s 作用:将汇编输出文件test.s编译输出test.o文件。 1 p% m3 {7 x3 ~9 f
无选项链接 用法:#gcctest.o -o test 作用:将编译输出文件test.o链接成最终可执行文件test。
7 R! T+ `" I- K分别编译各个源文件,之后对编译后输出的目标文件链接。 用法: #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
# I7 Q, D' Y5 ^9 R4 H B' `, }头文件 gcc在编译时怎么去寻找所需要的头文件:
/ G ^ F, A( [" M# ]※所以heade RFile的搜寻会从-I开始 0 F- |) n% H9 i* b, n7 t
※然后找gcc的环境变量C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
G' M3 L4 _! F8 Y. ~, x* @% x※再找内定目录 : ?7 G- b$ t3 R" M" ^
/usr/include
- O* H5 j$ G# [# ^/usr/local/include $ B2 A% d7 e- Q. W2 h
/usr/lib/gcc-lib/i386-linux/2.95.2/include
2 d; ]0 ?- k: v! F' D7 T/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
4 [8 {/ v3 a% N2 o/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include
x$ z- R. s5 }% \+ b库文件
& s6 z E1 T: s1 ?+ V. [2 ]编译的时候:
1 z& b0 P F8 I* u: r※gcc会去找-L 2 R$ ?3 p2 k% c
※再找gcc的环境变量LIBRARY_PATH ' @- @; v* d/ _
※再找内定目录/lib/usr/lib /usr/local/lib这是当初compilegcc时写在程式内的
z9 a1 Y+ g0 e' _-Dmacro 2 }) H3 Q X' _/ W1 _% z. C. W# g! \
相当于C语言中的#definemacro % Q$ u0 j* N$ m% D+ @
-Dmacro=defn
) i1 |7 k" W$ @4 h1 z! z4 x& M相当于C语言中的#definemacro=defn 0 i* K8 Z w( a, u' a
-Umacro 3 U& x' f* e4 H5 s
相当于C语言中的#undefmacro : |& {1 U- Q2 f2 b
-undef
1 w8 E) \7 b! e( s0 y. {取消对任何非标准宏的定义 -Idir
Y3 W0 V1 e( b5 ~* G; ^在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如 . R3 N g$ r* K! ]4 R" p: s4 s
果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他 8 Y9 s& m5 g; a3 K3 V
回先在你所制定的目录查找,然后再按常规的顺序去找. % J$ M: d% a2 [- r" O
对于#include<file>,gcc/g++会到-I制定的目录查找,查找不到,然后将到系统的缺
! |" M2 B7 {9 |- K. R( Y省的头文件目录查找
5 u0 @. b: x* d0 }-I- * a( d$ r+ z& Y" _
就是取消前一个参数的功能,所以一般在-Idir之后使用 -g - q# x+ i6 }2 A4 E
只是编译器,在编译的时候,产生调试信息。 -static ' v* `6 r3 p: G0 J: @( A
此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么
s a. a& _" v: a9 T动态连接库,就可以运行. -share
$ h2 G* ?3 ?+ Q. D- |: P$ z此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库. -w不生成任何警告信息。
9 P- ~% [5 Y0 D( t, ~-Wall生成所有警告信息。 无论静态库,还是动态库,都是由.o文件创建的。 静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们将创建的静态库名为myhello,则静态库文件名就是libmyhello.a。在创建和使用静态库时,需要注意这点。创建静态库用ar命令。 在系统提示符下键入以下命令将创建静态库文件libmyhello.a。 #ar cr libmyhello.a hello.o #gcc -o hello main.c -L. –lmyhello 8 S4 F4 s: s' ?5 V
动态库文件名命名规范和静态库文件名命名规范类似,也是在动态库名增加前缀lib,但其文件扩展名为.so。例如:我们将创建的动态库名为myhello,则动态库文件名就是libmyhello.so。用gcc来创建动态库。 在系统提示符下键入以下命令得到动态库文件libmyhello.so。 #gcc -shared -fPCI -o libmyhello.so hello.o
8 m7 `; x+ P( P( Z/ V- P+ ~) ` |