linux编译的c++程序位置

linux编译的c++程序位置,第1张

linux系统编译C++程序时头⽂件和库⽂件搜索路径

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⽬录,$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<headfile.h>

①先搜索-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++ -v

Using built-inspecs.

Target:x86_64-redhat-linux

Configured 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-linux

Thread model:posix

gcc version 4.1.2 20080704(Red Hat 4.1.2-46)

在安装g++时,指定了prefix,那么内定搜索⽬录就是:

Prefix/include

Prefix/local/include

Prefix/lib/gcc/--host/--version/include

编译时可以通过-nostdinc++选项屏蔽对内定⽬录搜索头⽂件。

库⽂件:

编译的时候:

①gcc会去找-L

②再找gcc的环境变量LIBRARY_PATH

③再找内定⽬录/lib /usr/lib/usr/local/lib 这是当初compilegcc时写在程序内的(不可配置的?)

运⾏时动态库的搜索路径:

动态库的搜索路径搜索的先后顺序是:

①编译⽬标代码时指定的动态库搜索路径(这是通过gcc 的参数"-Wl,-rpath,"指定。当指定多个动态库搜索路径时,路径之间⽤冒号":"分隔)

②环境变量LD_LIBRARY_PATH指定的动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间⽤冒号":"分隔)

③配置⽂件/etc/ld.so.conf中指定的动态库搜索路径;

④默认的动态库搜索路径/lib;

⑤默认的动态库搜索路径/usr/lib。

(应注意动态库搜寻路径并不包括当前⽂件夹,所以当即使可执⾏⽂件和其所需的so⽂件在同⼀⽂件夹,也会出现找不到so的问题,类同#include<header_file>不搜索当前⽬录)

5

百度文库VIP限时优惠现在开通,立享6亿+VIP内容

立即获取

linux系统编译C++程序时头文件和库文件搜索路径

linux系统编译C++程序时头⽂件和库⽂件搜索路径

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

第 1 页

全是bin⽬录,$PATH是运⾏可执⾏⽂件时的搜索路径,与include头⽂件的搜索路径⽆关,可能不少⼈犯了我这样的错误。

头⽂件:

1. #include“headfile.h”

搜索顺序为:

①先搜索当前⽬录

②然后搜索-I指定的⽬录

③再搜索gcc的环境变量CPLUS_INCLUDE_PATH(C程序使⽤的是C_INCLUDE_PATH)

展开全文

限免

导长图

转存到网盘

发送至微信

下载文档

北京百度网讯科技有限公司 版本号8.0.70

Linux系统下想要查看当前的路径,那我们该使用那个命令呢?下面由我为大家整理了linux查看路径命令的相关知识,希望对大家有帮助。

目录

linux查看路径命令

linux查看路径的其他命令

linux下查找某个文件位置的方法

linux查看路径命令

查看当前路径命令:pwd

pwd命令能够显示当前所处的路径。

这个命令比较简单,如果有时在 *** 作过程中忘记了当前的路径,则可以通过此命令来查看路径,其执行方式为:

# pwd /home/samlee

第一行为运行的命令,第二行的内容为运行pwd命令后显示的信息,即显示用户当前所在的工作目录的路径为/home/samlee。

提示:

应该经常使用pwd命令。Linux的目录结构非常复杂,一个小小的分支就可能会有十几层目录,就好像是个森林,所以Linux不会像Windows那样把全路径写在提示符里,那样太长了。

<<<

linux查看路径的其他命令

whereis 用来查看一个命令或者文件所在的绝对路径,而 which 用来查看当前要执行的命令所在的路径。

下面举个例子来说明。加入你的linux系统上装了多个版本的java。如果你直接在命令行敲命令 "java -version" ,会得到一个结果。但是,你知道是哪一个路径下的java在执行吗?如果想知道,可以用 which 命令:

which java

得到的结果就是系统默认执行的java所在的路径。

如果使用命令: whereis java

那么你会得到很多条结果,因为这个命令把所有包含java(不管是文件还是文件夹)的路径都列了出来。

<<<

linux下查找某个文件位置的 方法

一.通过文件名查找法:

举例说明,假设你忘记了httpd.conf这个文件在系统的哪个目录 下,甚至在系统的某个地方也不知道,则这是可以使用如下命令:

find / -name httpd.conf

这个命令语法看起来很容易就明白了,就是直接在find后面写上 -name,表明要求系统按照文件名查找,最后写上httpd.conf这个目标文件名即可。稍等一会系统会在计算机屏幕上显示出查找结果列表:

etc/httpd/conf/httpd.conf

这就是httpd.conf这个文件在Linux系统中的完整路径。查找成功。

如果输入以上查找命令后系统并没有显示出结果,那么不要以为系统没有执行find / -name httpd.conf命令,而可能是你的系统中没有安装Apache服务器,这时只要你安装了ApacheWeb服务器,然后再使用find / -name httpd.conf就能找到这个配置文件了。

二.无错误查找技巧:

在Linux系统中“find”命令是大多数系统用户都可以使用的命令,并不是ROOT系统管理员的专利。但是普通用户使用“find”命令时也有可 能遇到这样的问题,那就是Linux系统中系统管理员ROOT可以把某些文件目录设置成禁止访问模式。这样普通用户就没有权限用“find”命令来查询这 些目录或者文件。当普通用户使用“find”命令来查询这些文件目录是,往往会出现"Permissiondenied."(禁止访问)字样。系统将无法 查询到你想要的文件。为了避免这样的错误,我们可是使用转移错误提示的方法尝试着查找文件,例如输入:

find / -name access_log 2>/dev/null

这个方法是把查找错误提示转移到特定的目录中去。系统执行这个命令后,遇到错误的信息就直接输送到stderrstream2 中,access_log2就是表明系统将把错误信息输送到stderrstream2中,/dev/null是一个特殊的文件,表明空的或者错误的信 息,这样查询到的错误信息将被转移了,不会再显示了。

在Linux系统查找文件也会遇到这样一个实际问题。如果我们在整个硬盘,这个系统中查找某个文件就要花费相当长的一段时间,特别是大型Linux系 统和容量较大的硬盘,文件放在套嵌很深的目录中的时候。如果我们知道了这个文件存放在某个大的目录中,那么只要在这个目录中往下找就能节省很多时间了。使 用find /etc -name httpd.conf就可以解决这个问题。上面的命令就是表示在etc目录中查询httpd.conf这个文件。这里再说明一下“/”这个函数符号的含 义,如果输入“find /”就是表示要求Linux系统在整个ROOT目录下查找文件,也就是在整个硬盘上查找文件,而“find /etc”就是只在

etc目录下查找文件。因为“find /etc”表示只在etc目录下查找文件,所以查找的速度就相应要快很多了。

三.根据部分文件名查找方法:

例如我们知道某个文件包含有srm这3个字母,那么要找到系统中所有包含有这3个字母的文件是可以实现 的,输入:

find /etc -name '_srm_'

这个命令表明了Linux系统将在/etc整个目录中查找所有的包含有srm这3个字母的文件,比如absrmyz,tibc.srm等等符合条件的文件都能显示出来。如果你还知道这个文件是由srm 这3个字母打头的,那么我们还可以省略最前面的星号,命令如下:

find/etc -name 'srm_'

这是只有像srmyz这样的文件才被查找出来,像absrmyz或者absrm这样的文件都不符合要求,不被显示,这样查找文件的效率和可靠性就大大增强了。

四.根据文件的特征查询方法:

如果只知道某个文件的大小,修改日期等特征也可以使用“find”命令查找出来,这和WINDOWS系统中的“搜索”功能是基本相同的。在微软的“搜 索”中,“搜索助理”使得搜索文件和文件夹、打印机、用户以及网络中的其他计算机更加容易。它甚至使在Internet上搜索更加容易。“搜索助理”还包 括一个索引服务,该服务维护了计算机中所有文件的索引,使得搜索速度更快。使用“搜索助理”时,用户可以指定多个搜索标准。例如,用户可以按名称、类型及 大小搜索文件和文件夹。用户甚至可以搜索包含特定文本的文件。如果用户正使用Active Directory,这时还可以搜索带有特定名称或位置的打印机。

例如我们知道一个Linux文件大小为1,500bytes,那么我们可是使用如下命令来查询find /-size

1500c,字符c表明这个要查找的文件的大小是以bytes为单位。如果我们连这个文件的具体大小都不知道,那么在Linux中还可以进行模糊查找方式 来解决。例如我们输入find /-size+10000000c这个命令,则标明我们指定系统在根目录中查找出大于10000000字节的文件并显示出来。命令中的“+”是表示要求系 统只列出大于指定大小的文件,而使用“-”则表示要求系统列出小于指定大小的文件。下面的列表就是在Linux使用不同“find"命令后系统所要作出的 查找动作,从中我们很容易看出在Linux中使用“find”命令的方式是很多的,“find”命令查找文件只要灵活应用,丝毫不比在WINDOWS中查 找能力差。

find / -amin -10 # 查找在系统中最后10分钟访问的文件

find / -atime -2 # 查找在系统中最后48小时访问的文件

find / -empty # 查找在系统中为空的文件或者文件夹

find / -group cat # 查找在系统中属于groupcat的文件

find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件

find / -mtime -1 #查找在系统中最后24小时里修改过的文件

find / -nouser #查找在系统中属于作废用户的文件

find / -user fred #查找在系统中属于FRED这个用户的文件

<<<

linux查看路径命令相关 文章 :

★ linux查看路径命令

★ linux如何查找命令的路径

★ linux查询路径命令

★ Linux系统中查看当前路径的命令

★ linux查询命令路径

★ Linux中文件查找命令总结

★ linux查询目录命令

★ liunx find(文件查找)命令的介绍

★ Linux系统中tracert命令使用详解

var _hmt = _hmt || [](function() { var hm = document.createElement("script") hm.src = "https://hm.baidu.com/hm.js?1fc3c5445c1ba79cfc8b2d8178c3c5dd" var s = document.getElementsByTagName("script")[0] s.parentNode.insertBefore(hm, s)})()


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7641741.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-08
下一篇2023-04-08

发表评论

登录后才能评论

评论列表(0条)

    保存