EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、vim知识 f(find)命令也可以用于移动,fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符。 D 删除当前字符至行尾。D=d$ :split或new 打开一个新窗口,光标停在顶层的窗口上 :split file或:new file 用新窗口打开文件
' [" A5 r& `+ H二、如何替换搜索第二个match的字符 sed –i ‘s/xxx/yyy/2’file @1 {! }' C V5 b
三、gcc的知识 选项-c 用法:#gcc-c test.s 作用:将汇编输出文件test.s编译输出test.o文件。
7 s% i R, K+ v7 [8 s& j无选项链接 用法:#gcctest.o -o test 作用:将编译输出文件test.o链接成最终可执行文件test。 - ?6 d/ X1 d5 o( l0 {4 ~
分别编译各个源文件,之后对编译后输出的目标文件链接。 用法: #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 ' \, p2 G( Z8 {' j
头文件 gcc在编译时怎么去寻找所需要的头文件:
; J9 i( X3 x6 `' Q; L* S※所以heade RFile的搜寻会从-I开始
+ L A& T" b9 n4 q+ R& S: y+ E; e※然后找gcc的环境变量C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH * ]; W0 u" ?% w, y, K
※再找内定目录 0 Y+ h$ t" W3 O8 R/ u% i; y" X
/usr/include & ?0 p, b4 v7 R
/usr/local/include 4 \" a u: r0 N
/usr/lib/gcc-lib/i386-linux/2.95.2/include / _0 v6 ^& J& Q: @
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
! b$ i. T- d7 ?7 c1 [/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include / E7 T) N, r0 o0 e
库文件
7 p* F5 p8 N6 d3 L* X7 j" J编译的时候: t* o4 \# e4 B8 @9 B
※gcc会去找-L 8 `$ W4 j- j* F+ d
※再找gcc的环境变量LIBRARY_PATH
, w* n4 f1 ~4 s※再找内定目录/lib/usr/lib /usr/local/lib这是当初compilegcc时写在程式内的 M5 l" R A2 F5 |6 j6 k: ?
-Dmacro
4 F; N' ]3 e4 w( j8 p# v) I相当于C语言中的#definemacro & c% C% g; S% }* U
-Dmacro=defn ; _ T. @7 O A& J
相当于C语言中的#definemacro=defn & g# i. S2 h9 q, ?7 Y4 q9 g- z
-Umacro
) w( t7 T3 R! N相当于C语言中的#undefmacro . q0 U1 ^& j% G8 {: [# L) t
-undef
( M, y( [7 r# ^! q取消对任何非标准宏的定义 -Idir
6 s$ Z5 H2 D# v: H: @' h' S在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如
) Q5 a- |$ g- D7 X$ [4 |1 }3 A果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他
/ q1 A4 i! }0 J$ y! q! `回先在你所制定的目录查找,然后再按常规的顺序去找. 7 Q# O4 O4 p3 I9 ]8 W. q* N, ^
对于#include<file>,gcc/g++会到-I制定的目录查找,查找不到,然后将到系统的缺
, G6 Z" e8 Y/ L0 n* e省的头文件目录查找 & ? b- a, f7 t" k2 Z
-I-
4 i4 z X% _. ^0 s' k9 f9 C就是取消前一个参数的功能,所以一般在-Idir之后使用 -g 2 j7 j4 S- G% e' }% I. |1 Y# I8 M- n
只是编译器,在编译的时候,产生调试信息。 -static
$ q. E2 u! v k: v, r( t此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么
, t) N& d0 l: j! C9 W# L& ~) l动态连接库,就可以运行. -share # F3 O2 B6 g/ x4 E5 D4 i* W
此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库. -w不生成任何警告信息。
: T9 Y9 w$ U b% z* P0 h5 Y8 ?-Wall生成所有警告信息。 无论静态库,还是动态库,都是由.o文件创建的。 静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们将创建的静态库名为myhello,则静态库文件名就是libmyhello.a。在创建和使用静态库时,需要注意这点。创建静态库用ar命令。 在系统提示符下键入以下命令将创建静态库文件libmyhello.a。 #ar cr libmyhello.a hello.o #gcc -o hello main.c -L. –lmyhello 2 G/ r, `: Z3 A. c4 f
动态库文件名命名规范和静态库文件名命名规范类似,也是在动态库名增加前缀lib,但其文件扩展名为.so。例如:我们将创建的动态库名为myhello,则动态库文件名就是libmyhello.so。用gcc来创建动态库。 在系统提示符下键入以下命令得到动态库文件libmyhello.so。 #gcc -shared -fPCI -o libmyhello.so hello.o ( }, K; [* A, {, u0 v
|