Makefile.am似乎忽略了AM_LDLIBS

时间:2012-08-22 21:32:10

标签: autotools autoconf automake

我正在努力了解autotools。我几乎就在那里,但在涉及AM_CFLAGSAM_LDLIBS宏时,我对automake的行为感到有点难过。

下面是我非常简短的Makefile.am

  1 bin_PROGRAMS = sqlmigrate
  2 sqlmigrate_SOURCES = sqlmigrate.c db.c
  3 
  4 AM_CFLAGS=-g -Wall -D_LARGEFILE64_SOURCE=1 -I/usr/local/apr/include/apr-1
  5 AM_LDLIBS=-lsqlite3 -lapr-1

我的理解是AM_CFLAGSAM_LDLIBS在没有相应的参数传递给./configure时使用,但是在给定时它们会产生这样的参数。

创建Makefile.in并运行configure后,make all显然没有使用指定的CFLAGSLDLIBS,即使我已经指定了它们。

对我来说,甚至更奇怪的是,如果我碰巧使用AC_CHECK_LIB宏,我的配置脚本会导致包含这些库。

  1 #                                               -*- Autoconf -*-
  2 # Process this file with autoconf to produce a configure script.
  3 
  4 AC_PREREQ([2.68])
  5 AC_INIT([sqlmigrate], [1.0], [])
  6 AM_INIT_AUTOMAKE(1.8)
  7 AC_CONFIG_SRCDIR([sqlmigrate.c])
  8 
  9 # Checks for programs.
 10 AC_PROG_CC
 11 AC_PROG_INSTALL
 12 
 13 # Checks for libraries.
 14 # AC_CHECK_LIB([sqlite3], [sqlite3_open])
 15 # AC_CHECK_LIB([apr-1], [apr_pool_initialize])
 16 
 17 # Checks for header files.
 18 AC_CHECK_HEADERS([stdlib.h string.h unistd.h])
 19 
 20 # Checks for typedefs, structures, and compiler characteristics.
 21 
 22 # Checks for library functions.
 23 
 24 AC_CONFIG_HEADER(config.h)
 25 AC_CONFIG_FILES([Makefile])
 26 AC_OUTPUT

因此,在AC_CHECK_LIB行被注释掉的情况下,调用gcc而不链接库。

我觉得我在这里用一个带有autotools的线程。随意爆炸我的现实,向我展示我的方式的错误。

谢谢你的时间!

1 个答案:

答案 0 :(得分:2)

回答我自己的问题,我想我的Makefile.am中只有错误的变量。 AM_LDLIBS似乎不存在 - 我应该使用AM_LDFLAGS,虽然我仍然不明白为什么./configure导致在我使用AC_CHECK_LIB宏时链接库。