编译程序位置
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
② 在编译Java程序时,用于指定生成.class文件位置的选项是()。
【答案】:B
javac.exe是Java编译器,能将源程序代码编译成字节码,以.class扩展名存入Java工作目录中。它的命令清团格式为:javac[选项]文件名陆笑。其中[选项]包括以下几个:
-g输出文件中加行号以及局部变量信息,为调试程序时用。
-o对类文件进行优化编译。
-nowarn关闭警告信息,只显示错误信息。
-verbose显示早正含源代码文件和字节码文件的相关信息。
-d<目录>指定存放生成的类(.class)文件的位置根据上述介绍可知,在编译Java程序时,可以通过选项-d来指定生成的.class文件的位置。因此,本题的正确答案是B。
③ 编译程序安装在计算机的哪里
举例来说:
当你使用C编写代码,使用编译器编译后,即生成了可执行程序。当可执行程序被操作系统的加载器加载到内存、并准备好必要的数据后从代码段开始执行,这时的代码段代码已经是机器码了,无须编译。当然,可执行程序里的所有数据并非都是代码,有些是写给操作系统看的,以使操作系统能为程序的执行做好必要准备。
至于说DOS命令,分为外部命令和内部命令。外部命令和一般的可执行程序没有区别,他以可执行程序文件的形式存在。没有这个文件就不能运行这个命令;内部命令是固化在操作系统中的代码模块,一般以DLL文件的形式存在。至于哪个DLL文件包含特定的内部命令的代码,就必须查资料了。
CPU所支持的指令集,是由CPU的物理设计决定的,并不是说有什么指令存放在CPU上。
当然,如果是解释性的语言。那么,可执行程序是一边被解释(编译)一边被执行的。所以他的速度要慢些。并且必须安装对应的编译(解释)程序。比如JAVA。
④ 当一个MFC程序编译成功后,软件保存在哪
在你写的程序文件夹里面有个Debug文件夹。。。在那里藏着呢
⑤ 程序编译时地址如何分配
如果是具备操作系统的情况下,C语言,linux为例,程序会根据系统配置和elf格式自动加载进入内存。
起始地址是可执行文件的base_of_image字段指定的值,前提是不开启PIE保护。
而汇编器内部寻址只是一个偏移地址。
所以最终,一条指令的位置 = 起始地址+ 他在模块的偏移。
如果不具备操作系统,纯粹的嵌入式环境下,地址是自己指定的。
⑥ 怎么样才能找到自己电脑的编译软件位置
编译器通常都有固定的名字,比如fpc.exe,gcc.exe,g++.exe,javac.exe,具体要看你用何种语言何者举种编译器。如晌敏果实在太偏门的可以利用主动防御软件的日宴嫌枝志功能追踪。(如果你用的是linux当我没说…)
⑦ VC 编译器放在哪个文件夹
这要看你的VC安装在哪个文件夹,例如在”D:\Program
Files\Microsoft
Visual
Studio
9.0“
则VC编译器就在"D:\Program
Files\Microsoft
Visual
Studio
9.0\VC\Bin"文件夹下。
即在VC安装目录的"VC\Bin"文件夹下。
⑧ Linux编译C语言,源程序文件放在什么路径
改名:mv hello hello.c
编译:首先cd到你源文件的那个目录下,这样省去了指定绝对路径的麻烦,比如cd到桌面,然后:gcc hello.c -o hello
运行:./hello
⑨ microsoft visual c++里的编译在哪里
在生成菜单下的最后一个子菜单编译(这个是单独编译的)。
在生成菜单下的的 生产解决方案 或者 生产 ,就是编译加组建。在VC中编译程序的过程:
1.打开VC软件。
2.新建C++程序文件。
3.在新建面板中,选择“文件”选项卡,选择“C++ Source File”选项,同时输入该文件的名称。
4.写好程序后,单击工具栏的“Compile”按钮,进行编译。
5.编译完成,计算机提示我们代码正确,并创建了工程文件。
6.单击工具栏的“Build”按钮,进行连接。
7.计算机提示我们连接成功,并创建了二进制代码。
8.单击工具栏的“BuildExecute”按钮,计算机开始运行代码。
9.程序运行完毕,计算机输出了正确的结果。
⑩ 怎么知道电脑中c++的编译器按在哪了
如果这个软件桌面上有快捷方式的话,就右击快捷方式,点击属性。
在属性菜单点击快捷方式。