c - Makefile.am 中应该出现什么以及将库链接到带有 Autotools 的程序的源代码?

标签 c autotools

在 Makefile.am、configure.ac 和源代码中应该出现什么来将库链接到带有 Autotools 的程序?

我的(目前微不足道的)项目配置、构建和运行正常,但我想整理一下。

我目前有configure.ac:

dnl Process this file with autoconf to produce a configure script.

AC_PREREQ(2.59)
AC_INIT(foo, 1.0)

AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE()

AC_PROG_CC

AC_CONFIG_FILES(Makefile src/Makefile)
AC_OUTPUT

PKG_CHECK_MODULES([DEPS], [apr-1 >= 1.4.2])

Makefile.am(在 src/中):

bin_PROGRAMS=a.out
a_out_SOURCES=foo.c
a_out_LDADD = /usr/lib/libapr-1.so

和 foo.c:

...
#include <apr-1.0/apr_general.h>
#include <apr-1.0/apr_pools.h>
...

我想摆脱 Makefile.am 中/usr/lib/libapr-1.so 的硬编码路径和 foo.c 中的相关 #include 路径。我假设 PKG_CHECK_MODULES 可以找到并告诉我与 libapr 关联的文件的位置。

我应该如何修改这些文件才能使其正常工作?

谢谢,

克里斯。

最佳答案

看看这个 tutorial .

有趣的是,如果您这样定义 pkg 检查:

PKG_CHECK_MODULES([APR], [apr-1 >= 1.4.2])

然后您可以在 Makefile.am 中使用它:

project_name_LDADD = $(APR_LIBS)

关于c - Makefile.am 中应该出现什么以及将库链接到带有 Autotools 的程序的源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7160009/

相关文章:

c - 如何在控制台上显示长的未签名的int用户输入?

c - 递归函数求和两个其他之间的数字

ubuntu - 在 Ubuntu 中很难将数学和 GSL 联系起来

linux - gdb 无法针对arm-linux 进行交叉编译

autotools - 带有Autotools的预编译头文件

c - 如何最好地修复这两个警告(旧式 c 函数声明不是原型(prototype))

c - 如何获取va_arg的地址?

c - 项目中没有 Makefile.am 的 Makefile.in

Autotools本地目标目录

c - 为什么 C 中的 getchar() 函数是一个整数?