找回密码
 注册
关于网站域名变更的通知
查看: 235|回复: 1
打印 上一主题 下一主题

linux知识积累

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-5-9 10:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
一、vim知识
f(find)命令也可以用于移动,fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符。
D 删除当前字符至行尾。D=d$
:split或new 打开一个新窗口,光标停在顶层的窗口上
:split file或:new file 用新窗口打开文件
& R; u  ^0 _2 @) B% u/ y: x3 c
二、如何替换搜索第二个match的字符
sed –i ‘s/xxx/yyy/2’file
# j- u, Y7 r/ O& \- ?3 V
三、gcc的知识
选项-c
用法:#gcc-c test.s
作用:将汇编输出文件test.s编译输出test.o文件。
  @2 [, s& [. X: c0 X' t* ?
无选项链接
用法:#gcctest.o -o test
作用:将编译输出文件test.o链接成最终可执行文件test。

* }/ ?0 u: Q' ]9 U
分别编译各个源文件,之后对编译后输出的目标文件链接。
用法:
#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
: v% e3 B, |$ O) F- G9 `" E
头文件
gcc在编译时怎么去寻找所需要的头文件: 1 S9 `/ M: P5 ~, q2 l9 I
※所以headeRFile的搜寻会从-I开始
' d. D9 P1 P& @' v& I; O3 J  q! M& E※然后找gcc的环境变量C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
2 ^5 m  Z. J9 _8 K) r4 @; u: s※再找内定目录 . {/ r( i* F% H$ L
/usr/include
( ^; J2 Y; v4 Q9 T. D) E% K/usr/local/include
9 [/ I/ X; _: }& E2 f/usr/lib/gcc-lib/i386-linux/2.95.2/include
% U3 f0 J& z! x$ T  Z# j/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
7 R% H+ T. L! ?3 O% k3 o$ ?/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include

1 ?5 b$ b) u# a8 q! A
库文件   W; v1 {+ O7 B) E2 v8 ?) f
编译的时候:
4 Z+ l4 q( Z$ `# M8 p※gcc会去找-L
/ H) R$ k9 p+ a$ y4 t' z※再找gcc的环境变量LIBRARY_PATH
* Y2 N7 `# e6 ?" _  r5 a※再找内定目录/lib/usr/lib /usr/local/lib这是当初compilegcc时写在程式内的
, P% F5 f5 K7 w$ |7 Y- y
-Dmacro $ e  d2 {1 p; R8 q9 f! L" H' r
相当于C语言中的#definemacro ! d4 N6 \1 p) F7 S7 @
-Dmacro=defn
0 p* z  Y4 J# {' J; k3 y相当于C语言中的#definemacro=defn & a% Z4 v( V1 a7 r, x0 g% @5 L
-Umacro 9 t: r* }( Z8 z" `- S' _6 D
相当于C语言中的#undefmacro
4 o) ^8 j" A) F5 R# ]-undef 3 F  y+ C# t$ a. j: F2 ^6 X
取消对任何非标准宏的定义
-Idir 2 J. V) U. z8 d- m
在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如 & _  f7 f4 k. @& D
果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他
- [8 _2 F) u& y. A回先在你所制定的目录查找,然后再按常规的顺序去找.
' V6 ~# ]! i  K2 b4 c. b% I" X对于#include<file>,gcc/g++会到-I制定的目录查找,查找不到,然后将到系统的缺
; `4 z0 @# Q+ q+ |) K( d省的头文件目录查找 ; M% y) r* _$ `3 ^& I
-I- . B# I6 V2 V; b
就是取消前一个参数的功能,所以一般在-Idir之后使用
-g
' S$ H' I! T5 Y8 }) L: \2 K1 M) D只是编译器,在编译的时候,产生调试信息。
-static + [1 @8 _( g0 k  q7 t% F( @8 l
此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么
% }& r7 N, n# b; O0 T7 f/ U# R" t动态连接库,就可以运行.
-share ) r) N; {0 Q  J7 m1 X6 p$ V
此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.
-w不生成任何警告信息。 ; S1 T5 N: W  C. i+ W: W( s9 a
-Wall生成所有警告信息。
无论静态库,还是动态库,都是由.o文件创建的。
静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们将创建的静态库名为myhello,则静态库文件名就是libmyhello.a。在创建和使用静态库时,需要注意这点。创建静态库用ar命令。
       在系统提示符下键入以下命令将创建静态库文件libmyhello.a。
#ar cr libmyhello.a hello.o
#gcc -o hello main.c -L. –lmyhello
2 c7 @# }# E( m3 f9 m
动态库文件名命名规范和静态库文件名命名规范类似,也是在动态库名增加前缀lib,但其文件扩展名为.so。例如:我们将创建的动态库名为myhello,则动态库文件名就是libmyhello.so。用gcc来创建动态库。
在系统提示符下键入以下命令得到动态库文件libmyhello.so。
#gcc -shared -fPCI -o libmyhello.so hello.o
1 W6 x; b. ^! x/ N3 x

该用户从未签到

2#
发表于 2020-5-9 13:20 | 只看该作者
linux知识积累
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 02:34 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表