易截截图软件、单文件、免安装、纯绿色、仅160KB

linux gcc 命令

1,-c 编译目标代码
      gcc -o hello.o -c hello.c  //-o 只是指定生成目标文件名
      或
      gcc -c hello.c
      都生成hello.o文件,不可以执行。
      gcc -o hello hello.o
      用目标文件生成hello可执行文件。
      gcc -o hello hello.c
      用源文件直接生成hello可执行程序。
2,
-fpic或-fPIC   产生位置无关的目标代码,可用于构造共享函数库。
  # gcc -fPIC -c message.c
  “PIC”命令行标记告诉 GCC
产生的代码不要包含对函数和变量具体内存位置的引用,这是因为现在还无法知道
使用该消息代码的应用程序会将它连接到哪一段内存地址空间。这样编译输出的文
件 message.o 可以被用于建立
共享函数库。
  # gcc -shared -o libmessage.so message.o
  将上面的mian.c使用共享库函数ligmessage.so编译:
  # gcc -o goodbye -lmessage -L. message.o
3,gcc的常用连接选项有下列几个:
  -Ldir   将dir目录加到搜寻-l选项指定的函数库文件的目录列表中去,并优先于gcc缺省的搜索目录。在有多个-L
选项的情况下,按命令行上-L选项的前后顺序搜索。dir可使用相对路径。如-L../lib等。
  -lname   在连接时使用函数库libname.a,连接程序在-Ldir选项指定的目录下和/lib,/usr/lib目录下寻找该库文件。在没有使用-static选项时,如果发现共享函数库libname.so,则使用libname.so进行动态连接。
  -static   禁止与共享函数库连接。
  -shared   尽量与共享函数库连接。
4,编译选项顺序
          $ gcc test.o -L. -lhello -o test
          注意: $gcc -L. -lhello test.o -o test 会出错!。
         原因是: -l是链接器选项,必须要放到被编译文件的后面。 所以上面的命令中-lhello一定要放到 test.o的后面。


相关文档:

linux中touch命令参数修改文件的时间戳

linux中touch命令参数不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件,以下是linux中touch命令参数的使用方法:
  touch [-acm][-r ref_file(参照文件)|-t time(时间值)] file(文件名)
  example:
  touch file1.txt 更新file1.txt的存取和修改时间
  touch -c file1.tx ......

编译linux内核生成的system.map文件详解

有时system.map文件可以帮助我们理解内核编译,它记录了所有代码的运行地址。
system.map内容格式为:线性地址 类型 符号
具体内容如下:
00100000 A phys_startup_32
c0100000 T startup_32
c0100000 A _text                &nbs ......

在linux下,如何在C语言中使用正则表达式(整理)


  一个正则表达式的教程可以参看(里面有个测试正则表达式的工具)
     http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm#ad
 
     正则表达是用来匹配字符串的好东东。
   
     如果用户熟悉Lin ......

Linux网络代码导读v0.2

1 前言
许多人在分析linux代码时对网络部分(主要是src/linux/net,src/linux/include/net及src/linux/include/linux目录下的文件)比较感兴趣,确实,尽管已经从书本上学到了大量的TCP/IP原理,不读源码的话,头脑中还是建立不起具体的印象。而分析这部分代码的一个问题便是代码众多而资料很少。这篇文章的目的就是勾勒出 ......

Linux网络接口的源码结构

一.前言
  Linux的源码里,网络接口的实现部份是非常值得一读的,通过读源码,不仅对网络协议会有更深的了解,也有助于在网络编程的时候,对应用函数有更精确的了解和把握。
  本文把重点放在网络接口程序的总体结构上,希望能作为读源码时一些指导性的文字。
  本文以Linux2.4.16内核作为讲解的对象,内核源码 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号