EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、vim知识 f(find)命令也可以用于移动,fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符。 D 删除当前字符至行尾。D=d$ :split或new 打开一个新窗口,光标停在顶层的窗口上 :split file或:new file 用新窗口打开文件 " m) j8 \7 J4 A6 l! Z9 o
二、如何替换搜索第二个match的字符 sed –i ‘s/xxx/yyy/2’file " F2 ~2 G! }4 d8 S; `
三、gcc的知识 选项-c 用法:#gcc-c test.s 作用:将汇编输出文件test.s编译输出test.o文件。 6 Q0 ]7 q3 w( T) l) i2 h
无选项链接 用法:#gcctest.o -o test 作用:将编译输出文件test.o链接成最终可执行文件test。
: C- [5 ]- u* C7 i# P, W分别编译各个源文件,之后对编译后输出的目标文件链接。 用法: #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
! J4 G& v2 w6 Z4 W头文件 gcc在编译时怎么去寻找所需要的头文件: " l: L9 y+ t- \5 Z& X
※所以heade RFile的搜寻会从-I开始 ; i: E( i' J/ Z( o% |. g' s; ^
※然后找gcc的环境变量C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH + e7 S3 y3 Y/ k% t- Y6 P& T
※再找内定目录
+ n) Q2 X* c# p; b$ C4 o" a/usr/include # E# a. F: J; V1 R# [
/usr/local/include
1 `( X0 d! O! g! f* M6 ?. E" R7 W/usr/lib/gcc-lib/i386-linux/2.95.2/include
2 U- w+ l: K+ D0 r9 _+ l/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3 % G+ @; V3 ?$ f7 d# A3 a
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include + ?0 {1 f) A- o
库文件
1 d: R K x4 ~3 W编译的时候: # [* H* X4 u/ ?' U" B l4 S' f! }
※gcc会去找-L & v" E5 K* ^, o
※再找gcc的环境变量LIBRARY_PATH
& y1 ]2 m) q, W/ Y$ U5 @+ ^& C※再找内定目录/lib/usr/lib /usr/local/lib这是当初compilegcc时写在程式内的 - q2 R1 q" f# z3 X
-Dmacro
- U; f" a& }7 Y y o& G相当于C语言中的#definemacro 1 {! E z1 G/ W7 f
-Dmacro=defn
! F; W$ z% Z. a: ]相当于C语言中的#definemacro=defn
$ Q9 b2 t% C7 H- ~# r0 N-Umacro
+ X F6 F2 }& o4 L5 c: x/ w0 F相当于C语言中的#undefmacro
7 J) Y$ C$ k/ k/ ~* W _2 `) [-undef ( d: B' j; m2 R" G" ]3 D
取消对任何非标准宏的定义 -Idir P2 s- m( _' s/ o3 M" B2 N
在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如 - C: S% g9 X! |
果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他
; N( g6 K- A1 v' L! @* r; D% H3 [) O回先在你所制定的目录查找,然后再按常规的顺序去找. : y; O: i4 p4 ]0 ^ n7 |
对于#include<file>,gcc/g++会到-I制定的目录查找,查找不到,然后将到系统的缺
0 _& S9 j# V) B- j3 _ s5 m省的头文件目录查找 & M, v+ a: s- @! a$ P
-I- " _0 ^: N& |& A7 e; c
就是取消前一个参数的功能,所以一般在-Idir之后使用 -g
& y( B3 V1 b" X! _' y, c只是编译器,在编译的时候,产生调试信息。 -static
0 k& t- \3 m( C此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么
, ]' {- U( S2 s1 [: v动态连接库,就可以运行. -share
' O3 F$ H! `" B' T+ T此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库. -w不生成任何警告信息。
E& D+ J4 r; I% m0 ~5 F8 O+ I-Wall生成所有警告信息。 无论静态库,还是动态库,都是由.o文件创建的。 静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们将创建的静态库名为myhello,则静态库文件名就是libmyhello.a。在创建和使用静态库时,需要注意这点。创建静态库用ar命令。 在系统提示符下键入以下命令将创建静态库文件libmyhello.a。 #ar cr libmyhello.a hello.o #gcc -o hello main.c -L. –lmyhello
- S* Y. C; {( p# n动态库文件名命名规范和静态库文件名命名规范类似,也是在动态库名增加前缀lib,但其文件扩展名为.so。例如:我们将创建的动态库名为myhello,则动态库文件名就是libmyhello.so。用gcc来创建动态库。 在系统提示符下键入以下命令得到动态库文件libmyhello.so。 #gcc -shared -fPCI -o libmyhello.so hello.o ' h C; D( O. ^- s0 i O8 b
|