美好365app官方下载-beat365体育ios版下载-365bet手机客户端

C/C++ 头文件以及库的搜索路径

关键点: 1. #include 不会搜索当前目录 2. 使用 -I 参数指定的头文件路径仅次于 搜索当前路径。 3. gcc -E -v 可以输出头文件路径搜索过程 C++编译

C/C++ 头文件以及库的搜索路径

关键点: 1. #include <...> 不会搜索当前目录 2. 使用 -I 参数指定的头文件路径仅次于 搜索当前路径。 3. gcc -E -v 可以输出头文件路径搜索过程

C++编译时,教科书中写道:#include “headfile.h”优先在当前目录查找头文件;#include < headfile.h >从系统默认路径查找头文件。先前以为系统默认路径是环境变量$PATH指定的路径,在系统上一查,傻了眼:-bash-3.2$ echo $PATH/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin:/usr/java/j2re1.4.0/bin:/usr/atria/bin:/ccase/bin:/home/devcomp/bin全是bin目录,$PATH是运行可执行文件时的搜索路径,与include头文件的搜索路径无关,可能不少人犯了我这样的错误。 头文件:1. #include “headfile.h”搜索顺序为:①先搜索当前目录②然后搜索-I指定的目录③再搜索gcc的环境变量CPLUS_INCLUDE_PATH(C程序使用的是C_INCLUDE_PATH)④最后搜索gcc的内定目录/usr/include/usr/local/include/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include 各目录存在相同文件时,先找到哪个使用哪个。2. #include ①先搜索-I指定的目录②然后搜索gcc的环境变量CPLUS_INCLUDE_PATH③最后搜索gcc的内定目录/usr/include/usr/local/include/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include 与上面的相同,各目录存在相同文件时,先找到哪个使用哪个。这里要注意,#include<>方式不会搜索当前目录! 这里要说下include的内定目录,它不是由$PATH环境变量指定的,而是由g++的配置prefix指定的(知道它在安装g++时可以指定,不知安装后如何修改的,可能是修改配置文件,需要时再研究下):-bash-3.2$ g++ -vUsing built-in specs.Target: x86_64-redhat-linuxConfigured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=x86_64-redhat-linuxThread model: posixgcc version 4.1.2 20080704 (Red Hat 4.1.2-46) 在安装g++时,指定了prefix,那么内定搜索目录就是:Prefix/includePrefix/local/includePrefix/lib/gcc/--host/--version/include编译时可以通过-nostdinc++选项屏蔽对内定目录搜索头文件。 库文件:编译的时候:①gcc会去找-L②再找gcc的环境变量LIBRARY_PATH③再找内定目录 /lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程序内的(不可配置的?) 运行时动态库的搜索路径:动态库的搜索路径搜索的先后顺序是:①编译目标代码时指定的动态库搜索路径(这是通过gcc 的参数"-Wl,-rpath,"指定。当指定多个动态库搜索路径时,路径之间用冒号":"分隔)②环境变量LD_LIBRARY_PATH指定的动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)③配置文件/etc/ld.so.conf中指定的动态库搜索路径;④默认的动态库搜索路径/lib;⑤默认的动态库搜索路径/usr/lib。(应注意动态库搜寻路径并不包括当前文件夹,所以当即使可执行文件和其所需的so文件在同一文件夹,也会出现找不到so的问题,类同#include 不搜索当前目录) 参考资源:http://my.oschina.net/alphajay/blog/4953?from=rss

← 上一篇: 魔兽世界:无限 发布日期与全球上线时间 · Eternadex
下一篇: 如何解决手机屏幕出现的鬼畜现象? →

相关推荐

也买酒买酒怎么样? 也买酒买酒到底怎么样?

也买酒买酒怎么样? 也买酒买酒到底怎么样?

也买酒买酒怎么样? 也买酒买酒到底怎么样? 也买酒买酒怎么样?网上买酒的渠道比较多,大的杂货铺平台如淘宝,京东等,还有专门销售酒

至高20000mAh容量,支持华为Mate机型快充,满足用户的个性化需求

至高20000mAh容量,支持华为Mate机型快充,满足用户的个性化需求

华为12000 66W SuperCharge多协议双向超级快充与40W款式外形类似,采用纯白色外壳,表面经亮面烤漆工艺处理,边角过渡圆润,机身小巧扁平;它内

书香苏州怎么还书 书香苏州还书时间多长

书香苏州怎么还书 书香苏州还书时间多长

书香苏州是用户网上借书必备的软件。在上面人们能轻松的进行借书哦,而书香苏州怎么还书?在此,小编给你简单的还书方法介绍哦。 书香苏

走进怒江:怒江峡谷著名的景观——石月亮

走进怒江:怒江峡谷著名的景观——石月亮

石月亮的成因,是因怒江峡谷正处在欧亚板块与印度板块的接合部,强大的地质应力和迅速上升的地壳,构成了怒江峡谷独特的地质奇观和美丽

马洛加尔领主怎么打?5个技巧帮你轻松过关!

马洛加尔领主怎么打?5个技巧帮你轻松过关!

兄弟们,今天分享一下我打马洛加尔领主这个鬼东西的经历。那是个游戏里的BOSS,卡得我脑壳疼了好几天。 我连这BOSS是谁都不知道,就傻乎乎

荒野的召唤调查巴登丢失手机的地区 荒野的召唤前哨站怎么找?

荒野的召唤调查巴登丢失手机的地区 荒野的召唤前哨站怎么找?

荒野的召唤调查巴登丢失手机的地区及前哨站寻找攻略 一、巴登丢失手机地区调查 1. 进入游戏后,首先需要确认失联的区域,根据游戏提示,