EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、vim知识 f(find)命令也可以用于移动,fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符。 D 删除当前字符至行尾。D=d$ :split或new 打开一个新窗口,光标停在顶层的窗口上 :split file或:new file 用新窗口打开文件
, V- H6 ^/ v. p二、如何替换搜索第二个match的字符 sed –i ‘s/xxx/yyy/2’file
4 M9 E% [6 H' ]" @三、gcc的知识 选项-c 用法:#gcc-c test.s 作用:将汇编输出文件test.s编译输出test.o文件。 ! P8 [3 f% K9 H
无选项链接 用法:#gcctest.o -o test 作用:将编译输出文件test.o链接成最终可执行文件test。 9 I# {4 E( @& O Z2 a
分别编译各个源文件,之后对编译后输出的目标文件链接。 用法: #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 , p9 ?0 G! F6 c9 J9 |
头文件 gcc在编译时怎么去寻找所需要的头文件:
! s8 z8 ~8 G' p+ `※所以heade RFile的搜寻会从-I开始
, X8 _" q; O t! S/ S) h& M4 v※然后找gcc的环境变量C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
' X1 t. k% x& ? @+ f- k- f% b※再找内定目录 3 K9 t% J$ R: }
/usr/include
9 P! w! W1 ~* D7 I7 O& L/usr/local/include
* \* ^- w! v% E) Q0 K/usr/lib/gcc-lib/i386-linux/2.95.2/include
- Y. i4 p( K8 u& N7 Y/ V/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
( l' K$ Y4 H" n# D) }( k/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include - |, P/ O) p( E: w
库文件 0 v: f5 D% B6 g, ?
编译的时候:
2 M. V# z) H6 a※gcc会去找-L 1 @) D9 X% S( }
※再找gcc的环境变量LIBRARY_PATH 0 {+ x5 `( B$ x
※再找内定目录/lib/usr/lib /usr/local/lib这是当初compilegcc时写在程式内的
5 ]0 x/ q+ {8 m/ d2 h-Dmacro
& L3 Y- B# Y6 `6 B/ n+ t相当于C语言中的#definemacro
3 W7 A8 b; ^7 W$ U% i/ Z0 p% Y-Dmacro=defn
9 V, ^+ h+ S' k$ d- R# F* B- P* L相当于C语言中的#definemacro=defn ( Z9 i- w0 n/ @% q6 m8 k6 c/ Q! n# @
-Umacro 8 B4 _5 W$ L) C6 `# b7 U% [
相当于C语言中的#undefmacro
1 Q h; Z8 c+ N-undef
. a3 M; u; O& |5 k取消对任何非标准宏的定义 -Idir 2 M& G" r3 a# v3 p4 y K% e) K6 \
在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如
# h% X5 u( W$ S. v0 M- O. ^0 S2 v果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他
2 \: i5 ~0 Z- W回先在你所制定的目录查找,然后再按常规的顺序去找. ) L- Z! R; T, R4 ]& [
对于#include<file>,gcc/g++会到-I制定的目录查找,查找不到,然后将到系统的缺 0 a+ c: {6 o7 q! u5 v6 T. y- e" k
省的头文件目录查找
% t' n4 J& P0 b' v# G. N-I- $ q3 R5 f! l# F' r
就是取消前一个参数的功能,所以一般在-Idir之后使用 -g
) D% ` O, L/ H. i+ @2 d. l9 e只是编译器,在编译的时候,产生调试信息。 -static
; ]+ U: s# V& j2 H) T此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么 5 k+ O! S4 S1 U* l( | b" o
动态连接库,就可以运行. -share ( e4 V; [6 O1 H8 l
此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库. -w不生成任何警告信息。 - q5 q- `- U( k; |; d3 {
-Wall生成所有警告信息。 无论静态库,还是动态库,都是由.o文件创建的。 静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们将创建的静态库名为myhello,则静态库文件名就是libmyhello.a。在创建和使用静态库时,需要注意这点。创建静态库用ar命令。 在系统提示符下键入以下命令将创建静态库文件libmyhello.a。 #ar cr libmyhello.a hello.o #gcc -o hello main.c -L. –lmyhello
@) m6 G. @$ |' r0 p动态库文件名命名规范和静态库文件名命名规范类似,也是在动态库名增加前缀lib,但其文件扩展名为.so。例如:我们将创建的动态库名为myhello,则动态库文件名就是libmyhello.so。用gcc来创建动态库。 在系统提示符下键入以下命令得到动态库文件libmyhello.so。 #gcc -shared -fPCI -o libmyhello.so hello.o
& n$ e: L O, U |