[linux] linux知识积累(不断更新中…)

1、vim知识linux

f(find)命令也能够用于移动,fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符。vim

D 删除当前字符至行尾。D=d$调试

:split或new 打开一个新窗口,光标停在顶层的窗口上编译器

:split file或:new file 用新窗口打开文件it

 

2、如何替换搜索第二个match的字符编译

sed –i ‘s/xxx/yyy/2’filetest

 

3、gcc的知识变量

选项-cgcc

用法:#gcc-c test.s扩展

做用:将汇编输出文件test.s编译输出test.o文件。

 

无选项连接

用法:#gcctest.o -o test

做用:将编译输出文件test.o连接成最终可执行文件test。

 

分别编译各个源文件,以后对编译后输出的目标文件连接。

用法:

#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

 

头文件

gcc在编译时怎么去寻找所须要的头文件:
※因此headerfile的搜寻会从-I开始
※而后找gcc的环境变量C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
※再找内定目录
/usr/include
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include

 

库文件
编译的时候:
※gcc会去找-L
※再找gcc的环境变量LIBRARY_PATH
※再找内定目录/lib/usr/lib /usr/local/lib这是当初compilegcc时写在程式内的

 

-Dmacro
至关于C语言中的#definemacro
-Dmacro=defn
至关于C语言中的#definemacro=defn
-Umacro
至关于C语言中的#undefmacro
-undef
取消对任何非标准宏的定义

-Idir
在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如
果没有找到,他回到缺省的头文件目录找,若是使用-I制定了目录,他
回先在你所制定的目录查找,而后再按常规的顺序去找.
对于#include<file>,gcc/g++会到-I制定的目录查找,查找不到,而后将到系统的缺
省的头文件目录查找
-I-
就是取消前一个参数的功能,因此通常在-Idir以后使用

-g
只是编译器,在编译的时候,产生调试信息。

-static
此选项将禁止使用动态库,因此,编译出来的东西,通常都很大,也不须要什么
动态链接库,就能够运行.

-share
此选项将尽可能使用动态库,因此生成文件比较小,可是须要系统由动态库.

-w不生成任何警告信息。
-Wall生成全部警告信息。

不管静态库,仍是动态库,都是由.o文件建立的。

静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:咱们将建立的静态库名为myhello,则静态库文件名就是libmyhello.a。在建立和使用静态库时,须要注意这点。建立静态库用ar命令。

       在系统提示符下键入如下命令将建立静态库文件libmyhello.a。

#ar cr libmyhello.a hello.o

#gcc -o hello main.c -L. –lmyhello

 

动态库文件名命名规范和静态库文件名命名规范相似,也是在动态库名增长前缀lib,但其文件扩展名为.so。例如:咱们将建立的动态库名为myhello,则动态库文件名就是libmyhello.so。用gcc来建立动态库。

在系统提示符下键入如下命令获得动态库文件libmyhello.so。

#gcc -shared -fPCI -o libmyhello.so hello.o

 

4、MakeFile

相关文章
相关标签/搜索