小编leo*_*oha的帖子

Autotools交叉编译和生成源

我正在尝试使用autotools(autoconf,automake,libtool)创建一个库作为构建系统.该库必须是可交叉编译的,但构建它的步骤之一是通过在整个过程中从源构建的可执行文件生成源.

问题是我不能使用automake的系统来构建中间二进制文件,因为当它交叉编译时,它不会在'--build'上运行来生成源代码.

解决这个问题的一种方法是创建单独的autools项目来构建中间二进制文件,但我想避免它,因为有许多标题和其他"数据"文件对于中间可执行文件和最终库是常见的,所以我想将它保存在一个地方,除了那些中间二进制文件应该是"noinst".

有没有其他方法可以使其正常工作并保持可移植性?我试图使用ax_prog_cxx_for_build,但在交叉编译时我找不到--build的EXEEXT.

这是一个问题的例子,只是为了说明我的问题:

configure.ac

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.68])
AC_INIT([libfoobar], [0.1.0], [<NOBUGS>])
AM_INIT_AUTOMAKE([foreign])
LT_INIT

AC_CONFIG_SRCDIR([src/bar.cpp])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_FILES([Makefile
                 src/Makefile])

# Checks for programs.
AC_PROG_CXX

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_OUTPUT
Run Code Online (Sandbox Code Playgroud)

Makefile.am

ACLOCAL_AMFLAGS = -I m4

SUBDIRS = src
Run Code Online (Sandbox Code Playgroud)

SRC/Makefile.am

bin_PROGRAMS = bar
lib_LTLIBRARIES = libfoo.la

noinst_bar_SOURCES = bar.cpp …
Run Code Online (Sandbox Code Playgroud)

automake autoconf gnu autotools cross-compiling

2
推荐指数
1
解决办法
711
查看次数

标签 统计

autoconf ×1

automake ×1

autotools ×1

cross-compiling ×1

gnu ×1