linux gcc编译生成库,printf()函数 【转】Linux下gcc编译生成动态链接库*.so文件并调用它(10)...

2.通过环境变量LD_LIBRARY_PATH指定动态库搜索路径。通过设定环境变量LD_LIBRARY_PATH也可以指定动态库搜索路径。当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号':'分隔。下面通过例2来说明本方法。

举一个例子:这次我们把上面得到的文件lib_test.so移动到另一个地方去,如/root下面,然后设置环境变量LD_LIBRARY_PATH找到lib_test.so。设置环境变量方法如下:# export LD_LIBRARY_PATH=/root # 然后运行: #./main.out You found me!!!# 注意:设置环境变量LD_LIBRARY_PATH=/root是不行的,非得export才行。

3.在编译目标代码时指定该程序的动态库搜索路径。还可以在编译目标代码时指定程序的动态库搜索路径。-Wl,表示后面的参数将传给link程序ld(因为gcc可能会自动调用ld)。这里通过gcc的参数'-Wl,-rpath,'指定 举一个例子:这次我们还把上面得到的文件lib_test.so移动到另一个地方去,如/root/test/lib下面,因为我们需要在编译目标代码时指定可执行文件的动态库搜索路径,所以需要用gcc命令重新编译源程序main.c(见程序2)来生成可执行文件main.out。# gcc -o main.out -L. –l_test -Wl,-rpath,/root/test/lib main.c#

运行结果: # ./main.out You found me!!! #

一个函数开始的时候可能以内联的形式出现,但是随着系统的扩展,函数体可能要求添加额外的功能,结果内联函数就变得不太可能,因此需要把inline specifier去除以及把函数体放到一个单独的源文件中。

从运行结果可见:三种方式的缓存配置都已经成功。

我们从运行结果来看,它一会输出mainthread ,一会输出new thread。

对比一下jsp页面和生成的java类可以发现,页面的所有内容都被放在_jspservice方法中,其中页面直接输出的html代码被翻译成out.write输出,页面中的动态“”包裹的java代码直接写到_jspservice方法中的相应位置,而“”被翻译成out.print输出。

3) java.library.path: storm使用的本地库(zmq和jzmq)加载路径,默认为”/usr/local/lib:/opt/local/lib:/usr/lib”,一般来说zmq和jzmq默认安装在/usr/local/lib 下,因此不需要配置即可。

error: plugin load for plugin 'decodeutfkeys' failed with return code: error: can't locate uri/escape.pm in @inc (@inc contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl . /usr/share/awstats/lib /usr/share/awstats/plugins) at (eval 3) line 1.。

配置文件smb.conf的默认路径是/usr/local/samba/lib/smb.conf,我们可以在运行smbd进程时,通过-s选项来执行特定的smb.conf文件(具体说明见下一节),一般不推荐使用-s选项,因为其配置工具,如smbclient、testparm等默认都是读取/usr/local/samba/lib/smb.conf文件。

2、默认情况下,系统搜索库文件的路径/lib, /usr/lib。

以上介绍了三种指定动态库搜索路径的方法,加上默认的动态库搜索路径/lib和/usr/lib,共五种动态库的搜索路径,那么它们搜索的先后顺序是什么呢?读者可以用下面的方法来试验一下:(1)用前面介绍的方法生成5个lib_test.so放在5个不同的文件夹下面,要求每一个lib_test.so都唯一对应一个搜索路径,并注意main.out程序输出的不同。(2)运行main.out,即可看出他是那个搜索路径下的,然后删除这个路径下的lib_test.so,然后再运行。依此类推操作,即可推出搜索顺序。

可以得出动态库的搜索路径搜索的先后顺序是:

1.编译目标代码时指定的动态库搜索路径;

2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;

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

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

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

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/ruanjian/article-90979-10.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值