最近一直忙着学Linux下的编程,书籍主要以<<Unix环境高级编程>>为主,工具主要使用cc,gcc编译器,gdb调试器,vim编辑器,因为不熟悉Linux环境,所以没有使用Linux操作系统,仅下载了安装了Cygwin,感觉入门不难,但是那些琐碎的技巧还是要记一些的,把经常要用的罗列出来,以后好查找.随着学习的深入,还会逐步添加内容的.
1生成目标文件
gcc -c sourcefile1.c sourcefile2.c或cc -c sourcefile1.c sourcefile2.c
2生成静态链接库(需要使用目标文件sourcefile1.o sourcefile2.o)
ar -rc libname.a sourcefile1.o sourcefile2.o
3生成动态链接库
gcc -fpic -shared -o libname.so sourcefile1.c sourcefile2.c
-fpic 使输出的对象模块是按照可重定位地址方式生成的。
-shared指定把对应的源文件生成对应的动态链接库文件libname.so文件。
4使用静态库
分2步:1)编译生成目标文件 gcc -c -lDIRECTORY/libname main.c
2)生成可执行文件 gcc -o main -lDIRECTORY/libname main.o libname.a
DIRECTORY为库所在的路径,建议使用相对路径
5使用动态库
动态库分为隐式调用和显式调用,隐式调用和使用静态库差不多,只要将第2步的libname.a改成libname.so就可以了.显式调用需要结合程序给出实例,暂不讨论.
6调试程序
编译时需要使用-g选项来编译程序,例如:gcc -g sourcefile.c,默认生成a.out,然后输入命令gdb a就可以调试了.
7makefile的编写
最简单的makefile可以用下面这个例子来表示:
Projectname:
cc -o programname sourcefile.c
clean:
rm sourcefile.o programname.out
以makefile为文件名保存后,敲make命令就可以了,再敲make clean就将sourcefile.o和programname.out删除了.
8压缩和解压文件
想要学习编程,看别人写的代码是必要的,所以就要从网上下载一些Linux/Unix的源代码,这是肯定会用到的就是解压工具了,所以tar还是很重要的,解压一个包不是很难,基本上使用以下的例子来阐述:
tar -xvf stevens.tcpipiv1.tar.Z
9显示文件内容
cat命令是我常用的,后面跟文件名就好了.如果一凭显示不完,可以用管道将它输出到more上面然后一点点往下看,就像下面这样:cat filename | more,从这里我才感觉到Linux真的功能强大,但他的强大在于使用的人...至少我还不太会使用,呵呵.
10查看程序的大小
使用size命令可以查看程序的text, data, bss, dec及hex的大小.
11在文件中查找字符串
在编辑源文件时,我们要用到更多的技巧,如果源代码行数很多,而且文件的数目也很多,我们不可能记住每个函数在哪个文件中哪个位置定义,所以要用到以下的工具来进行定位,列举一例:
grep -n main *.c
这个可以查找出main函数的所在位置,当然可能会存在多个函数,这就需要我们根据输出的信息在进一步确认了.另外,选项有以下几个,其具体含义如下所示.
-n 同时列出改词出现在文中第几行
-c 计算该词出现的次数
-i 比较时不计较大小写的不同
12编辑器VIM的使用
这个说起来光简单用法恐怕就可以用一整篇文章了,常用的命令大致如下:
":1"到第一行,冒号后面跟数字,数字是几就到第几行
":set cindent",设置缩进格式为C语言的缩进格式
":set number",显示行号
"#"向前搜索
"*"向后搜索
"ndd"删除当前光标位置的n行
"nyy"粘贴,n为粘贴的行数
"CTRL-R" 恢复
"/str/"搜索字符串str,再按"n"跳到下一个