因此,在我运行libtool并从我的库源中获取libfoo.lo
和foo.o
文件后,如何将libfoo.lo
文件转换为普通的Linux共享库,如{{ 1}}所以我可以在我的目标系统上安装并链接到它?
答案 0 :(得分:7)
从问题中提到的输出,看起来你用--mode =编译模式运行libtool。您需要使用--mode = link再次运行libtool以生成.a和.so库。
libtool只是生成库所需的gcc,ln ar和ranlib的简单包装器。它所做的就是运行gcc添加必要的选项,以确保正确创建静态和共享库。
编译libtool时,插入-fPIC标记以确保共享库所需的位置无关代码的生成。 .o文件是普通的目标文件,可以归档到静态.a文件中。 .lo文件是具有位置无关代码的目标文件,现在可以链接到.so文件中。
当链接libtool将运行ar以创建静态库或ln将对象文件链接到.so共享库时。
libtool也可以在需要时使用--mode = install。
安装库有关详细信息,请参阅http://www.gnu.org/software/libtool/manual/libtool.html。
请记住,在构建可执行文件时,总会有两个阶段,即编译和链接。