autotool学习笔记


SOURCE :http://hi.baidu.com/_jiangming/item/b77acfc302cbd036a1b50a2c


1. autotools交叉编译:

  eg:如果希望程序运行在arm平台上,如下:

  ./configure CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc --host=arm --target=arm [c项目]

  ./configure CXX=/usr/local/arm/3.4.1/bin/arm-linux-gcc --host=arm --target=arm [c++项目]


2. 指定程序或库的生成目录,Makefile.am通常如下:

  eg:

     bin_PROGRAMS=complex

     complex_SOURCES=complex.c

     complex_LDFLAGS=-lpthread #如果使用到pthread线程库

 

     all-am: #重中之重

               #在源代码更目录下建立bin目录,并将complex拷贝到bin目录下

         -mkdir -p $(top_srcdir)/bin |  \cp $(bin_PROGRAMS) $(top_srcidr)/bin


3. 通常会将头文件专门放入一个指定的目录,但在make dist打包的时候,通常不会将这些头文件打包进去,可以在Makefile.am中加上EXTRA_DIST指定需要加入的文件

    eg:

    EXTRA_DIST=$(top_srcdir)/include #此时会将整个include目录打进去

   

4. 如果存在多个目录需要编译,主目录下的Makefile.am通常如下:

  

   AUTOMAKE_OPTIONS = foreign

   SUBDIRS =src

   SUBDIRS += $(top_srcdir)/lib

   ...

   ...


5.Makefile.am中include_HEADERS和data_DATA对程序的安装有影响,在make install的时候,会根据include_HEADERS和data_DATA,将相应的文件拷贝到相应的系统目录下。


6.Makefile.am 可执行文件编译:

  

   AUTOMAKE_OPTIONS = app

   app_SOURCES = ...

   app_LDADDS = 库文件、目标文件

   INCLUDES = -I...

  如果将所有的目标文件全部存放到了一个固定的目录,如: $(top_srcdir)/obj,那么链接可以这么写:

  app_LDDADD = $(top_srcdir)/obj/* <== 系统会自动从该目录下查找所需要的目标文件


7.Makefile.am 静态库编译:

 eg:

   noinst_LIBRARIES = libadd.a

   libadd_a_SOURCES = add.c

   INCLUDES = $(top_srcdir)/inc

   configure.in中需要加入:

     AC_PROG_RANLIB



8.Makefile.am 动态库编译:

configure.in中需要加入:

   AC_PROG_LIBTOOL


编译步骤:

  aclocal

  autoconf

  autoheader

  libtoolize --automake

  automake –-add-missing


Makefile.am(共享库的):

  lib_LTLIBRARIES = libadd.la

  libadd_la_SOURCES = add.cpp

  libadd_la_LIBADD = -L /my_openssl_lib -lcrypto <== 依赖第三方的库,具体目录依据实际位置

  INCLUDES = -I$(top_srcdir)/inc

  

Makefile.am(调用该库的):

  bin_PROGRAMS = add

  add_SOURCES = main.cpp

  INCLUDES = -I$(top_srcdir)/inc

  add_LDADD = -L../lib -ladd <== 需要的共享库,具体目录依据实际位置


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值