打开 VC6.0,创建一个新的工程或打开现有的工程。
在“工具”菜单中选择“选项”选项。
在d出的“选项”对话框中选择“目录”选项卡。
在“目录”选项卡中选择“库文件”一项,然后点击“添加新目录”按钮。
在d出的“新目录”对话框中输入库文脊仔件所在的目录路径,然后点击“确定”按钮。
点击启山“确定”按钮关闭“选项”对话框。
在工程中添加头文件,并且在使用该头文件的源文件中添加对应的库文件。可以使用#pragma或者在工程属性中设置链接器选项。
运行程序,如果没有出现库文件链接错误,说明库文件已经正确链接到程序中。
需要注意的是,在添加库文件路径时,应该添加库文件所在的根目录路径,而不是库文件的具体文悄野中件路径。库文件的文件名应该以.lib或.obj为后缀。
一、compile-time库文件搜索路径
1.如果编译时指定了-L选项,就优先到-L指定的路径去查找库进行连接;
2.查找GCC的环境变量LIBRARY_PATH
3.到/bin /usr/lib /usr/local/lib去查找。这几个搜索路径在gcc下是默认的。
所以当我们要让自己添加的库文件让gcc能搜索到,有两种方法,一种就是用-L指定,一种就是将库复制到以上几个gcc默认搜索路径。
二、run-time库搜索路径
1.编译时用-Wl, -rpath指定的路径
Ex:
arm-none-linux-gnueabi-gcc -o helloword_arm helloword.c -Wl,-dynamic-linker=/system/lib/ld-linux.so.3,-rpath,/system/lib/
2.环境变量LD_LIBRARY_PATH指定的路径
3./etc/ld.so.conf指定的路径
4.默认的动态搜索库路径/lib /usr/lib
LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下:
LIBRARY_PATH环境变量用于在程序编译期间查找动大链态链接库时指定查找共享库的路径,例如,指定gcc编译需要用到的动态链接库的目录。设置方法如下(其中,LIBDIR1和LIBDIR2为两个库目录):
export LIBRARY_PATH=LIBDIR1:LIBDIR2:$LIBRARY_PATH
LD_LIBRARY_PATH环境变量用于在程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径滚仿孙,注意,LD_LIBRARY_PATH中指定的路径会在系统默认路径之前进行查找。设置方法如下(其中,LIBDIR1和LIBDIR2为两个库目录):
export LD_LIBRARY_PATH=LIBDIR1:LIBDIR2:$LD_LIBRARY_PATH
举个例子,我们开发一个程序,经常会需要使用某个或某些动态链接库,为了保证程序的可移植性,可以先将这些编译好的动态链接库放在自己指定的目录下,然后按照上述方式将这些目录加入到LD_LIBRARY_PATH环境变量中,这样自己的程序就可以动态链接后加载库文件运行了。
区别与使用:
开发时,设置LIBRARY_PATH,以便gcc能够找到编译时需要的动态链接库。
发布时,设置LD_LIBRARY_PATH,以便程序加载运行时能够自动找到需要的动态链接库。
三、几个重要的命令
1)ldd bin_name
可以查看编译出来的可执行文件依赖的库。部署程序时,我们要把这些库拷贝出来,然后将这些库连同可执行文件大渗拷贝到新的机器上,在/etc/ld.so.conf.d下添加对应的库文件搜索路径即可。
2.ldconfig命令
搜索/lib和/usr/lib以及/etc/ld.so.conf下列出来的所有路径的库,然后创建动态库的cache文件。当程序需要搜索库时就会搜索ld.so.cache里列出来的库。
所以当我们向系统添加新的库文件时,除了需要把库文件烤到/usr/local/lib等指定位置外,还需ldconfig一下来更新cache文件。
四、gcc头文件的搜索路径
1.优先搜索-I指定的路径
2.查找GCC的环境变量C_INCLUDE_PATH/CPLUS_INCLUDE_PATH/OBJC_INCLUDE_PATH指定的路径
3.查找默认的搜索路径/usr/include /usr/local/include
所有GCC的环境变量,我们都可以GCC的原有搜索路径上上面添加进我们自己的路径,例如
#增加.so搜索路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home//lib
#增加.a搜索路径
LIBRARY_PATH=$LIBRARY_PATH:/home/lib
#增加bin搜索路径
export PATH=$PATH:/home/bin
#增加GCC的include文件搜索路径
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/home/include
-wall -pedantic
-wall编译时显示所有的警告信息,可以增加程序的健壮性和可移植性
-pedantic,以符合ANSI/ISO C 标准列出所有警告
C++标准库头文件,不同的编译器默认路径不相同。
Vc6.0一般在安装目录下的\VC98\INCLUDE目录,比如C:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE。
Vs一般在位于$VSPATH\VC\include路径下面。
gcc一般默认在 /usr/include目录下
自定义头文件文件要么和源代码文件放在同一处,要么在编译的时候指明自定义头文件路径,这样编译器才能找到头文件,才能编译通过。
另外,一些头文件需要在工程里面添加与头文件相对应的DLL动态链接库的支持才能用,因为袜中头文件大多都只是定义,具体地实现是在cpp中,但还有一些像windows自带的野好弯头文件,他们的实现都是在DLL里面,你必须添加对这些DLL的支持才能使用这个头颂闷文件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)