Issues cross compiling libnftnl for arm
libnftnl对libmnl有依赖性,我为ARM分别交叉编译了libmnl。编译的库和包含目录位于/ home / badri / arm_libs / mnl
./ configure --build = x86_64-pc-linux-gnu --host = aarch64-linux-gnu --enable-static = no --prefix = / home / badri / arm_libs / nftnl LIBMNL_LIBS = / home / badri / arm_libs / mnl / lib LIBMNL_CFLAGS = / home / badri / arm_libs / mnl / include LDFLAGS = -L / home / badri / arm_libs / mnl / lib LIBS = -lmnl --includedir = / home / badri / arm_libs / mnl /包括
此配置成功。而且我可以看到'configure'的输出表明存在LIBMNL。
。
。
检查pkg-config至少是0.9.0版...是
正在检查LIBMNL ...是
正在检查aarch64-linux-gnu-gcc ...(已缓存)aarch64-linux-gnu-gcc
。
。
但是当我尝试做一个make时,我遇到了这个失败。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | badri@badri-All-Series:~/Downloads/libnftnl-1.1.7$ make make all-recursive make[1]: Entering directory '/home/badri/Downloads/libnftnl-1.1.7' Making all in src make[2]: Entering directory '/home/badri/Downloads/libnftnl-1.1.7/src' CC utils.lo aarch64-linux-gnu-gcc: warning: /home/badri/arm_libs/mnl/include: linker input file unused because linking not done CC batch.lo batch.c:11:10: fatal error: libmnl/libmnl.h: No such file or directory #include <libmnl/libmnl.h> ^~~~~~~~~~~~~~~~~ compilation terminated. Makefile:702: recipe for target 'batch.lo' failed make[2]: *** [batch.lo] Error 1 make[2]: Leaving directory '/home/badri/Downloads/libnftnl-1.1.7/src' Makefile:493: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory '/home/badri/Downloads/libnftnl-1.1.7' Makefile:399: recipe for target 'all' failed make: *** [all] Error 2 badri@badri-All-Series:~/Downloads/libnftnl-1.1.7$ |
配置是否缺少任何内容?
./ configure --help
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | $ ./configure --help `configure' configures libnftnl 1.1.7 to adapt to many kinds of systems. Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print `checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for `--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, `make install' will install all the files in `/usr/local/bin', `/usr/local/lib' etc. You can specify an installation prefix other than `/usr/local' using `--prefix', for instance `--prefix=$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/libnftnl] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-silent-rules less verbose build output (undo:"make V=1") --disable-silent-rules verbose build output (undo:"make V=0") --enable-static[=PKGS] build static libraries [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka"SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir> LIBS libraries to pass to the linker, e.g. -l<library> CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if you have headers in a nonstandard directory <include dir> PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path LIBMNL_CFLAGS C compiler flags for LIBMNL, overriding pkg-config LIBMNL_LIBS linker flags for LIBMNL, overriding pkg-config LT_SYS_LIBRARY_PATH User-defined run-time library search path. CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. $ |
创建了一个名为nftnl2的新前缀路径,并进行了尝试。
./ configure --build = x86_64-pc-linux-gnu --host = aarch64-linux-gnu --enable-static = no --prefix = / home / badri / arm_libs / nftnl2 LIBMNL_LIBS = / home / badri / arm_libs / mnl / lib LIBMNL_CFLAGS = / home / badri / arm_libs / mnl / include /
现在我可以在/ home / badri / arm_libs / nftnl2下看到include和lib。因此,添加这些额外的标志一定会引起一些问题。最终,这只是configure的一个问题。