注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

Eclipse开发总结之六动态库的添加方法再说明  

2015-11-12 13:45:29|  分类: LINUX编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Eclipse开发总结之六动态库的添加方法再说明

 

编译时如果用到库的,编译方法有如下几种:

一、带后缀SO,但这不是推荐的。

g++  -o  test  TestSDK.cpp

-L.-lIrisSDK.so-lIKAlgAPI.so-lIKAlgoIR.so-lIKAlgoFR.so-lIKAlgoID.so-lIKAlgoIC.so

SO要求无空格。否则找不到库。

 

二、不带后缀SO

g++ -L/home/fjf/NewSdkAPI/lib -pthread -o test TestSDK.cpp   -lIrisSDK -lIKAlgAPI -lIKAlgoIR -lIKAlgoFR -lIKAlgoID -lIKAlgoIC

上面几个库之间有空格,编译正确。

g++ -o test TestSDK.cpp -L ../../lib -lIrisSDK -lIKAlgAPI -lIKAlgoIR -lIKAlgoFR -lIKAlgoID -lIKAlgoIC

正面从-L到最后无空格,编译正确

g++ -o test TestSDK.cpp -L 空格../../lib -lIrisSDK -lIKAlgAPI -lIKAlgoIR -lIKAlgoFR -lIKAlgoID -lIKAlgoIC

都有空格,编译正确。

三、正确的应该是:

g++  -o  test  TestSDK.cpp

 -L../../lib  -lIrisSDK  -lIKAlgAPI  -lIKAlgoIR  -lIKAlgoFR  -lIKAlgoID  -lIKAlgoIC

这里在除了-L后没有空格,其它都有。

要求:

1、库的名字不能加前面的lib

2、库的后面不能加.so

3、库的名字应该是lib.so之间名字,比如生成的库为libIrisManager.so,链接时为IrisManager.

4、在Eclipse中,要在链接的Library中添加,并在其下面添加指定的路径。

5、注意库的加载顺序。比如对上这个例子来说,没有特别的顺序,虽然调用上有顺序。

综合上述:

1、如果有.so,那么路径就不能有空格。这样仍然可以编译成功,最特殊的就是只有一个库的情况下。就是如此。

2、按正常的方法,则没有任何问题,加与不加都无所谓。包括你指定的-L是不是和库直接在一起。

其实真正的原因在于,如果名字中有SO,则处理时无法真正找到相关路径下的SO

再举一个小例子:

gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lworld

上面这句表示在编译hello.c时:

-I /home/hello/include表示将/home/hello/include目录作为第一个寻找头文件的目录,寻找的顺序是:/home/hello/include-->/usr/include-->/usr/local/include

 

-L /home/hello/lib表示将/home/hello/lib目录作为第一个寻找库文件的目录,寻找的顺序是:/home/hello/lib-->/lib-->/usr/lib-->/usr/local/lib

 -lworld表示在上面的lib的路径中寻找libworld.so动态库文件(如果gcc编译选项中加入了“-static”表示寻找libworld.a静态库文件)

 

另参看前面博客“Linux动态库的编译与使用”。

  评论这张
 
阅读(216)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017