Linux操作系统的头文件和库文件搜索路径
一、 头文件 1 “”中的头文件,在源文件当前目录查找 2 -I 中指定目录 3 gcc的环境变量 C_INCLUDE_PATH, CPLUS_INCLUDE_PATH, OBJC_INCLUDE_PATH 4 编译器预设路径、内定目录: /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的时候,有给定的prefix的话,那么就是 /usr/include prefix/include prefix/xxx-xxx-xxx-gnulibc/include prefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include 此外-I还可以在CFLAG中指定。 还可用pkg-config 程序,用来在编译脚本中向编译器传递头文件包含路径或库文件路径。 Linux下那么多库,在./configure时时怎么判断它们存不存在的,难道是靠递归搜索?pkg-config这个命令和/*/lib/pkgconfig下的一些.pc文件才是主角。每个.pc文件定义了库的名字、路径、编译选项等,比如glib-2.0.pc文件: prefix=/usr exec_prefix=${prefix}
libdir=/usr/lib
includedir=${prefix}/include glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums Name: Glib
Description: C Utilitiy Library
Version: 2.14.4
Libs: -L${libdir} -lglib-2.0
Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include --cflags 参数可以给出在编译时所需要的选项,而 --libs 参数可以给出连接时的选项 configure到某个库的时候,pkg-config命令会首先去PKG_CONFIG_PATH定义好的路径下搜索库名字对应的.pc文件,找到了就行了,等会儿make的时候就可以通过正则表达式取出libs和cflags的值来使用。 配置 pkgconfig PKG_CONFIG_PATH 的缺省设置是 /lib/pkgconfig, /usr/lib/pkgconfig 和 /usr/local/lib/pkgconfig. 这些设置都是硬编码的,所以不用另外设置它们。 二、 库文件 Ø 编译的时候动态库的搜索路径: 1 gcc会去找-L 指定的路径和 –l指定的库 2 由'-rpath-link'选项指定的搜索路径 在LDFLAGS中gcc 的参数"-Wl,-rpath,"指定 3 由'-rpath'指定的搜索路径. '-rpath'跟'-rpath_link'的不同之处在于,由'-rpath'指定的路径被包含在可执行文件中,并在运行时使用, 而'-rpath-link'选项仅仅在连接时起作用. 4 再找内定目录 /lib
相关文档:
例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......
一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......
一般在linux下查看网络配置可以使用ifconfig命令,可以显示当前网卡的基本配置信息。
终端输入ifconfig 会出现一下内容:
eth0
Link encap:Ethernet HWaddr 00:0C:29:0C:4B:0F
inet addr:192.168.37.128 Bcast:192.168.37.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:33 er ......
在Linux操作系统下修改IP、DNS和路由配置
ifconfig eth0 新ip
然后编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip
一、修改IP地址
[aeolus@db1 network-scripts]$ vi ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=219.136.241.211
NETMASK=255 ......
Linux中的地址空间
有这么一系列的问题,是否在困扰着你:用户程序编译连接形成的地址空间在什么范围内?内核编译后地址空间在什么范围内?要对外设进行访问,I/O的地址空间又是什么样的?
先回答第一个问题。Linux最常见的可执行文件格式为elf(Executable and Linkable Format)。在elf格式的可执行代码中,ld总是从0x ......