在树莓派上将 libffi 编译为静态库

Posted

技术标签:

【中文标题】在树莓派上将 libffi 编译为静态库【英文标题】:compile libffi as static library on raspberry pi 【发布时间】:2015-11-24 04:04:55 【问题描述】:

我正在尝试编译 libffi-3.2.1 的静态库,但没有成功。

    cd libffi-3.2.1 ./configure --prefix=/home/pi/libraries/libffi --enable-static --disable-shared 制作

输出如下:

制作 armv6l-unknown-linux-gnueabihf : 0 * all-all make[1]: 进入目录'/home/pi/libffi-3.2.1/armv6l-unknown-linux-gnueabihf' 制作 'AR_FLAGS=' 'CC_FOR_BUILD=' 'CFLAGS=-O3 -fomit-frame-pointer -fstrict-aliasing -ffast-math -Wall -fexceptions' 'CXXFLAGS=-g -O2' 'CFLAGS_FOR_BUILD=' 'CFLAGS_FOR_TARGET=' ' INSTALL=/usr/bin/install -c' 'INSTALL_DATA=/usr/bin/install -c -m 644' 'INSTALL_PROGRAM=/usr/bin/install -c' 'INSTALL_SCRIPT=/usr/bin/install -c' 'JC1FLAGS=' 'LDFLAGS=' 'LIBCFLAGS=' 'LIBCFLAGS_FOR_TARGET=' 'MAKE=make' 'MAKEINFO=/bin/bash /home/pi/libffi-3.2.1/missing makeinfo ' 'PICFLAG=' 'PICFLAG_FOR_TARGET=' 'RUNTESTFLAGS=' 'SHELL=/bin/bash' 'exec_prefix=/home/pi/libraries/libffi' 'infodir=/home/pi/libraries/libffi/share/info' 'libdir=/home/pi/libraries/ libffi/lib' 'mandir=/home/pi/libraries/libffi/share/man' 'prefix=/home/pi/libraries/libffi' 'AR=ar' 'AS=as' 'CC=gcc' 'CXX= g++' 'LD=/usr/bin/ld' 'NM=/usr/bin/nm -B' 'RANLIB=ranlib' 'DESTDIR=' 全递归 make[2]: 进入目录'/home/pi/libffi-3.2.1/armv6l-unknown-linux-gnueabihf' 使一切都包括在内 make[3]: 进入目录'/home/pi/libffi-3.2.1/armv6l-unknown-linux-gnueabihf/include' make[3]: 'all' 无事可做。 make[3]: 离开目录'/home/pi/libffi-3.2.1/armv6l-unknown-linux-gnueabihf/include' 在测试套件中制作所有内容 make[3]: 进入目录'/home/pi/libffi-3.2.1/armv6l-unknown-linux-gnueabihf/testsuite' make[3]: 'all' 无事可做。 make[3]: 离开目录'/home/pi/libffi-3.2.1/armv6l-unknown-linux-gnueabihf/testsuite' 尽在人中 make[3]: 进入目录'/home/pi/libffi-3.2.1/armv6l-unknown-linux-gnueabihf/man' make[3]: 'all' 无事可做。 make[3]: 离开目录'/home/pi/libffi-3.2.1/armv6l-unknown-linux-gnueabihf/man' make[3]: 进入目录'/home/pi/libffi-3.2.1/armv6l-unknown-linux-gnueabihf' 恢复=: && backupdir=".am$$" && \ am__cwd=pwd && CDPATH="$ZSH_VERSION+.:" && cd .. && \ rm -rf $backupdir && mkdir $backupdir && \ if (/bin/bash /home/pi/libffi-3.2.1/missing makeinfo --version) >/dev/null 2>&1;然后 \ 对于 ../doc/libffi.info 中的 f ../doc/libffi.info-[0-9] ../doc/libffi.info-[0-9][0-9] ../doc/libffi .i[0-9] ../doc/libffi.i[0-9][0-9];做 \ 如果测试 -f $f;然后 mv $f $backupdir;恢复=MV;别的 :;菲; \ 完毕; \ 别的 :;菲&&\ cd "$am__cwd"; \ 如果 /bin/bash /home/pi/libffi-3.2.1/missing makeinfo -I doc -I ../doc \ -o ../doc/libffi.info ../doc/libffi.texi; \ 然后 \ rc=0; \ CDPATH="$ZSH_VERSION+.:" && cd ..; \ 别的 \ rc=$?; \ CDPATH="$ZSH_VERSION+.:" && cd .. && \ $restore $backupdir/* echo "./../doc/libffi.info" | sed 's|[^/]*$||'; \ 菲; \ rm -rf $备份目录;退出 $rc /home/pi/libffi-3.2.1/missing:第 81 行:makeinfo:找不到命令 警告:您的系统上缺少“makeinfo”。 仅当您修改了“.texi”文件时才需要它,或者 任何其他间接影响手册方面的文件。 你可能想要安装 Texinfo 包: http://www.gnu.org/software/texinfo/ 虚假的 makeinfo 调用也可能是 使用有缺陷的“make”(AIX、DU、IRIX),在这种情况下,您可能 想要安装 GNU make: http://www.gnu.org/software/make/ Makefile:1408: 目标“../doc/libffi.info”的配方失败 make[3]: * [../doc/libffi.info] 错误 127 make[3]: 离开目录'/home/pi/libffi-3.2.1/armv6l-unknown-linux-gnueabihf' Makefile:1596: 目标“全递归”的配方失败 make[2]: [全递归] 错误 1 make[2]: 离开目录'/home/pi/libffi-3.2.1/armv6l-unknown-linux-gnueabihf' Makefile:730:目标“全部”的配方失败 make[1]: [all] 错误 2 make[1]: 离开目录'/home/pi/libffi-3.2.1/armv6l-unknown-linux-gnueabihf' Makefile:607: 目标 'all-all' 的配方失败 make: * [all-all] 错误 2

我错过了什么? 问候

【问题讨论】:

【参考方案1】:

missing: line 81: makeinfo: command not found WARNING: 'makeinfo' is missing on your system

尝试安装texinfo:

sudo apt-get install texinfo

【讨论】:

以上是关于在树莓派上将 libffi 编译为静态库的主要内容,如果未能解决你的问题,请参考以下文章

用于 C++ 的 C# 包装器,但仅编译为静态库

使用 Visual Studio 2010 将 libexif 编译为静态库 - 然后从 Visual C++ 项目链接

树莓派外设开发综述

[树莓派]aarch64编译静态的ffmpeg 可硬解h264/hevc

Linux下静态库与动态库

linux下的静态库与动态库详解