libtool的作用及应用

creating hello
-rpath项负责添加运行时库路径,否则只能手工修改LD_LIBRARY_PATH环境变量了。
验证一下:
# ldd .libs/hello
        linux-gate.so.1 =>  (0xffffe000)
        libhello.so.0 => /usr/local/lib/libhello.so.0 (0x40019000)
        libc.so.6 => /lib/tls/libc.so.6 (0x40031000)
        /lib/ld-linux.so.2 (0x40000000)

5.install executable file      
#libtool --mode=install cp hello /usr/local/bin/hello
安装可执行程序。

6.运行
libtool --mode=execute hello
或直接运行hello
注意:此处hello已经安装在/usr/local/bin下了,可以用which hello来查看

【附】源码
foo.c
#include <stdio.h>
char msg[128]="Hello world";
void print()
{
        printf("%s\n", msg);
}

hello.c:
extern char msg[128];
extern void print();
int main()
{
        print();
}

Makefile:
LO_OBJS = foo.lo
PACKAGE_VERSION = 1:1:1
LIBDIR=/usr/local/lib
BINDIR=/usr/local/bin

all : hello

install : libhello.la hello
  libtool --mode=install install -c libhello.la

${LIBDIR}/libhello.la
  libtool --mode=install cp hello ${BINDIR}/hello

uninstall : ${LIBDIR}/libhello.la ${BINDIR}/hello
  libtool --mode=uninstall /bin/rm ${LIBDIR}/libhello.la
  libtool --mode=uninstall /bin/rm ${BINDIR}/hello

hello : libhello.la hello.lo
  libtool --mode=install install -c libhello.la ${LIBDIR}/libhello.la
  libtool --mode=link gcc -g -O -o hello hello.lo -rpath ${LIBDIR} libhello.la

libhello.la : $(LO_OBJS)
   libtool  --mode=link --tag=CC gcc -g -O -o libhello.la $(LO_OBJS) -rpath ${LIBDIR} -version-info ${PACKAGE_VERSION}

foo.lo : foo.c
   libtool --mode=compile gcc -g -O -c foo.c

hello.lo : hello.c
   libtool --mode=compile gcc -g -O -c hello.c

clean :
  rm -f lib*.a *~ *core *.lo *.o *.la hello
  rm -rf .libs

这样,用户可以用make编译,make install/uninstall安装/卸载,make clean清除编译临时文件,安装成功后,可以直接执行hello,不必指明路径也不必再另设环境变量LD_LIBRARY_PATH,非常方便!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值