读书频道 > 系统 > linux > 深度探索Linux操作系统系统构建和原理解析
2.2.11 关于使用libtool链接库的讨论
2013-09-28 15:02:22     我来说两句 
收藏    我要投稿   
全书一共8章:第1章介绍了如何准备工作环境。在第2章中构建了编译工具链,这是后面构建操作系统各个组件的基础。在这一章中,不仅详细讲解了工具链的构建过程,而且还通过对编译链接过程的探讨,深入讨论了工具链  立即去当当网订购

GNU中的大部分软件包都使用libtool处理库的链接。通常,大部分的软件在包发布时都已经包含了libtool所需的脚本工具等。但是如果一旦准备使用autoconf、automake重新生成编译脚本,且这些脚本中包含了libtool提供的M4宏,则需要安装libtool。可使用如下命令安装libtool。
root@baisheng:~# apt-get install libtool

在交叉编译环境中使用libtool处理库的链接时,依然还有个不大不小的问题,如同pkg-config的麻烦一样,如果使用宿主系统的libtool,那么编译库时生成的库的la文件中,记录库本身安装的位置以及依赖库的安装位置的路径将依然指向宿主系统的根文件系统,比如一个典型的la文件:
dependency_libs=' /usr/lib/libxcb.la /usr/lib/libXau.la'
libdir='/usr/lib'

而实际上,目标系统的根文件系统在$SYSROOT下。显然,如果使用libtool链接,将会找错库的安装位置。

我们可以修改宿主系统的libtool,使其在交叉编译环境下能够创建合适的la文件;或者直接修改la文件,将类似“/usr/lib/*”的路径调整为“$SYSROOT/usr/lib/*”;或者如pkg-config一样,封装一个libtool。但是我们采用更简单的方式,使用如下命令将la文件删除:
find $SYSROOT -name "*.la" -exec rm -f '{}' \;

删除库的la文件后,链接相应的库时将不再使用libtool去寻找库的位置,而是依靠链接器去寻找库的位置。虽然libtool不建议这样做,但这样做最简单,且不容易发生错误,因此,后续我们采用这种方法。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:2.2.10 封装“交叉”pkg-config
下一篇:2.2.12 启动代码
相关文章
图文推荐
3.3.6 GNOME的软件管
3.3.5 GNOME的文件管
3.3.4 GNOME的窗口管
3.3.3 收藏夹和快捷
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站