tqsheng

go.....
随笔 - 366, 文章 - 18, 评论 - 101, 引用 - 0
数据加载中……

指定使用静态库

Linux动态链接库的问题_静态库、动态链接库同时存在时,gcc/g++默认用动态库,参数-WI,-Bstatic指定使用静态库,参数-WI,-Bdynamic指定使用动态库\编译OK,运行找不到的问题_解决-WI,rlibpathname  

2011-03-11 14:30:23|  分类: Linux系统编程|字号 订阅

1、在Linux下,动态库和静态库同事存在时,gcc/g++的链接程序,默认链接的动态库。

                 可以使用下面的方法,给连接器传递参数,看是否链接动态库还是静态库。

          

                -WI,-Bstatic             -llibname                                   //指定让gcc/g++链接静态库

使用:

                gcc/g++   test.c -o test      -WI,-Bstatic     -llibname

         

              -WI,-Bdynamic       -llibname                                    //指定让gcc/g++链接动态库

使用:

               gcc/g++   test.c -o test    -WI,-Bdynamic        -llibname

 

               如果要完全静态加在,使用-static参数,即将所有的库以静态的方式链入可执行程序,这样生成的可执行程序,不再依赖任何库,同事出现的问题是,这样编译出来的程序非常大,占用空间。

 

         

 

2、Linux下动态库为什么会出现编译OK,运行时找不到的情况。

                  原因是:

                          linux下链接器默认是不记录库的搜索路径的,只记录名字,所以才会有编译时OK,但运行时,找不到的情况。

                解决方法:

                         想在程序中记录路径,可以使用-WI,-rlibpath指定动态库的搜索路径。

                         使用方法。

                          gcc/g++    test.c   -o test   -WI,rlibpath   -llibname

 

3、关于Linux下库的更多问题,可以参看:

                自己的博客:   http://blog.163.com/xychenbaihu@yeah/blog/static/13222965520101023104745738/

               http://xiaobin.net/200911/analytics-on-unix-static-and-dynamic-library/ 

posted on 2013-01-04 16:32 tqsheng 阅读(4156) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理