EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、vim知识 f(find)命令也可以用于移动,fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符。 D 删除当前字符至行尾。D=d$ :split或new 打开一个新窗口,光标停在顶层的窗口上 :split file或:new file 用新窗口打开文件
( h9 `. J/ i7 I) S+ T3 G2 e二、如何替换搜索第二个match的字符 sed –i ‘s/xxx/yyy/2’file
& ~& B$ l; | n$ B ]# r三、gcc的知识 选项-c 用法:#gcc-c test.s 作用:将汇编输出文件test.s编译输出test.o文件。 ! P; G( }( t. I" d5 u) C; V- {
无选项链接 用法:#gcctest.o -o test 作用:将编译输出文件test.o链接成最终可执行文件test。 3 p. P, C' z+ @2 v7 J6 f
分别编译各个源文件,之后对编译后输出的目标文件链接。 用法: #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 6 H7 W% N& g- b- u( R
头文件 gcc在编译时怎么去寻找所需要的头文件:
* `* \' V- o% J+ W※所以heade RFile的搜寻会从-I开始 $ n6 r- C3 h! z
※然后找gcc的环境变量C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH 8 b. `' D( D2 R( M! T, R
※再找内定目录
G4 }5 ~9 B3 V/usr/include 4 y6 U7 d3 w$ t9 F
/usr/local/include 6 J) a% ]/ l! t8 Z' S* T8 m
/usr/lib/gcc-lib/i386-linux/2.95.2/include
0 ]1 C) g+ S5 `. O/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3 0 v8 i( C' F- C: |, z
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include * f/ y8 `+ z, G2 ^
库文件 7 g6 w" W/ d- ~. Y4 ]
编译的时候: ( _9 _; s- v" B" m. |
※gcc会去找-L , S4 H3 C* N) N- s4 @; g0 F5 k
※再找gcc的环境变量LIBRARY_PATH
% t$ H" B a5 H※再找内定目录/lib/usr/lib /usr/local/lib这是当初compilegcc时写在程式内的 ) T) f1 ~5 ?0 L. W4 O% U) N: w3 m
-Dmacro 7 J# T6 y0 P+ F9 I! g4 o
相当于C语言中的#definemacro $ i8 ]' M8 f$ t% {5 L P$ @8 Q
-Dmacro=defn
& g* G0 j& @; W, ?+ o8 Z, u相当于C语言中的#definemacro=defn 9 q ?$ s9 }# O' s( B& k: ]
-Umacro + Z9 m' b6 [+ r/ }' m! q0 F
相当于C语言中的#undefmacro
, [# j7 i$ e. p$ N2 ]-undef
+ `* e C9 Z- U' {' @- s取消对任何非标准宏的定义 -Idir
% H* H1 h( U; r/ S, R( n8 P在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如
9 v; X+ R5 U( D, D. r+ G果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他 9 I5 z/ T" |% N) t6 Q: o8 ~
回先在你所制定的目录查找,然后再按常规的顺序去找.
4 ]0 t0 g+ q h9 G- X5 _ m对于#include<file>,gcc/g++会到-I制定的目录查找,查找不到,然后将到系统的缺 : P) j. A/ W3 ^' l$ U- D1 _# a
省的头文件目录查找 * K9 G2 G6 X$ u
-I-
2 Z+ b: |* }' l7 T. W- P就是取消前一个参数的功能,所以一般在-Idir之后使用 -g 1 Y6 I4 e# \8 ?+ N2 Q! e, _7 c" D' ?
只是编译器,在编译的时候,产生调试信息。 -static Y' G ]- X5 M7 _0 @. t
此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么
* V. O. b6 i+ r动态连接库,就可以运行. -share 4 \" K( o; z% Z- Q2 M5 X. ?
此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库. -w不生成任何警告信息。 4 [3 d4 a6 b3 z
-Wall生成所有警告信息。 无论静态库,还是动态库,都是由.o文件创建的。 静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们将创建的静态库名为myhello,则静态库文件名就是libmyhello.a。在创建和使用静态库时,需要注意这点。创建静态库用ar命令。 在系统提示符下键入以下命令将创建静态库文件libmyhello.a。 #ar cr libmyhello.a hello.o #gcc -o hello main.c -L. –lmyhello 6 n! V4 U* H2 B: x. f/ D5 f
动态库文件名命名规范和静态库文件名命名规范类似,也是在动态库名增加前缀lib,但其文件扩展名为.so。例如:我们将创建的动态库名为myhello,则动态库文件名就是libmyhello.so。用gcc来创建动态库。 在系统提示符下键入以下命令得到动态库文件libmyhello.so。 #gcc -shared -fPCI -o libmyhello.so hello.o + l$ P. ~. _$ H% n3 q
|