저는 현재 autotools를 이해하고 있습니다. 나는 거의 다 왔지만, AM_CFLAGS
과 AM_LDLIBS
매크로에 관해서는 automake의 동작에 다소 난처한 편이다.Makefile.am이 AM_LDLIBS를 무시하는 것 같습니다
다음은 내 매우 짧은 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_CFLAGS
및 AM_LDLIBS
주어진 때이 같은 주장에 굴복한다는 해당 인수가 ./configure
에 전달되지 않을 때 사용되지만이다.
그러나 Makefile.in을 만들고 configure를 실행 한 후에 은 분명히 지정한 CFLAGS
과 LDLIBS
을 사용하고 있지 않습니다.
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가있는 스레드에 매달려있는 것처럼 느껴집니다. 내 현실을 폭발시키고 내 방식의 오류를 보여주십시오.
시간 내 주셔서 감사합니다.
'-I/usr/local/apr/include/apr-1'과 같은 것은'AM_CFLAGS' 또는'AM_CPPFLAGS'에 속하지 않습니다. 이 경로는 사용자가 패키지를 빌드하는 시스템에만 해당되므로 autotool 메타 파일에 아무 것도 없습니다. –