2

我正在使用本教程创建一个交叉编译器。

我按照 gcc 交叉编译器教程进行了移植 newlib。一切正常,直到我尝试通过发布来编译它

make all install

当我收到以下错误时:

WARNING: `makeinfo' is missing on your system.  You should only need it if
         you modified a `.texi' or `.texinfo' file, or any other file
         indirectly affecting the aspect of the manual.  The spurious
         call might also be the consequence of using a buggy `make' (AIX,
         DU, IRIX).  You might want to install the `Texinfo' package or
         the `GNU make' package.  Grab either from any GNU archive site.

并且编译停止。

我正在使用 Ubuntu 11.10。

我努力了:

  • 使用不同的 gcc、binutils 和 newlib 版本(大约 5 种不同的组合)

  • 安装 Texinfo

  • 更正 makeinfo 路径

我的交叉编译器在没有 newlib 的情况下完美运行,只是它当然不能包含库。

4

2 回答 2

1

即使您安装了 makeinfo,它也可能无法识别较新的版本。以下补丁有效。在下面复制并另存为“configure.patch”,将其保存在配置脚本所在的位置,然后键入“patch -p1 < configure.patch”。

--- newlib-1.14.0-bak/configure 2008-06-10 20:49:16.918036351 +0200
+++ newlib-1.14.0/configure 2008-06-10 21:21:35.750035824 +0200
@@ -3542,7 +3542,7 @@
     # For an installed makeinfo, we require it to be from texinfo 4.2 or
     # higher, else we use the "missing" dummy.
     if ${MAKEINFO} --version \
-       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])' >/dev/null 2>&1; then
+       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.([2-9]|[1-9][0-9])|[5-9])' >/dev/null 2>&1; then
       :
     else
       MAKEINFO="$MISSING makeinfo"
于 2013-05-06T20:22:30.693 回答
0

我试图安装 6809 GDB 并收到此错误。我通过进入 Makefile 并更改来修复

MAKEINFO = /opt/binutils-gdb/missing makeinfo

MAKEINFO = makeinfo

我也不得不这样做

BISON = bison
YACC = bison -y
FLEX = flex
LEX = flex

但是 make 遇到了一些野牛函数定义:

macroexp.o: In function `get_character_constant':
/opt/vectrex/binutils-gdb/gdb/macroexp.c:364: undefined reference to `c_parse_escape'
c-lang.o:(.data.rel.ro+0x28): undefined reference to `c_parse'
c-lang.o:(.data.rel.ro+0x30): undefined reference to `c_error'
c-lang.o:(.data.rel.ro+0x148): undefined reference to `c_parse'
c-lang.o:(.data.rel.ro+0x150): undefined reference to `c_error'
c-lang.o:(.data.rel.ro+0x268): undefined reference to `c_parse'
c-lang.o:(.data.rel.ro+0x270): undefined reference to `c_error'
c-lang.o:(.data.rel.ro+0x388): undefined reference to `c_parse'
c-lang.o:(.data.rel.ro+0x390): undefined reference to `c_error'
d-lang.o:(.data.rel.ro+0x28): undefined reference to `c_parse'
d-lang.o:(.data.rel.ro+0x30): undefined reference to `c_error'
f-lang.o:(.data.rel.ro+0x28): undefined reference to `f_parse'
f-lang.o:(.data.rel.ro+0x30): undefined reference to `f_error'
objc-lang.o:(.data.rel.ro+0x28): undefined reference to `c_parse'
objc-lang.o:(.data.rel.ro+0x30): undefined reference to `c_error'
go-lang.o:(.data.rel.ro+0x28): undefined reference to `go_parse'
go-lang.o:(.data.rel.ro+0x30): undefined reference to `go_error'
m2-lang.o:(.data.rel.ro+0x28): undefined reference to `m2_parse'
m2-lang.o:(.data.rel.ro+0x30): undefined reference to `m2_error'
opencl-lang.o:(.data.rel.ro+0x28): undefined reference to `c_parse'
opencl-lang.o:(.data.rel.ro+0x30): undefined reference to `c_error'
p-lang.o:(.data.rel.ro+0x28): undefined reference to `pascal_parse'
p-lang.o:(.data.rel.ro+0x30): undefined reference to `pascal_error'
cp-support.o: In function `mangled_name_to_comp':
/opt/vectrex/binutils-gdb/gdb/cp-support.c:644: undefined reference to `cp_demangled_name_to_comp'
/opt/vectrex/binutils-gdb/gdb/cp-support.c:629: undefined reference to `cp_new_demangle_parse_info'
cp-support.o: In function `cp_canonicalize_string_full':
/opt/vectrex/binutils-gdb/gdb/cp-support.c:534: undefined reference to `cp_demangled_name_to_comp'
/opt/vectrex/binutils-gdb/gdb/cp-support.c:541: undefined reference to `cp_comp_to_string'
/opt/vectrex/binutils-gdb/gdb/cp-support.c:545: undefined reference to `cp_demangled_name_parse_free'
cp-support.o: In function `inspect_type':
/opt/vectrex/binutils-gdb/gdb/cp-support.c:260: undefined reference to `cp_demangled_name_to_comp'
/opt/vectrex/binutils-gdb/gdb/cp-support.c:264: undefined reference to `cp_merge_demangle_parse_infos'
cp-support.o: In function `replace_typedefs':
/opt/vectrex/binutils-gdb/gdb/cp-support.c:441: undefined reference to `cp_comp_to_string'
cp-support.o: In function `replace_typedefs_qualified_name':
/opt/vectrex/binutils-gdb/gdb/cp-support.c:368: undefined reference to `cp_comp_to_string'
/opt/vectrex/binutils-gdb/gdb/cp-support.c:343: undefined reference to `cp_comp_to_string'
cp-support.o: In function `cp_canonicalize_string':
/opt/vectrex/binutils-gdb/gdb/cp-support.c:582: undefined reference to `cp_demangled_name_to_comp'
/opt/vectrex/binutils-gdb/gdb/cp-support.c:587: undefined reference to `cp_comp_to_string'
/opt/vectrex/binutils-gdb/gdb/cp-support.c:588: undefined reference to `cp_demangled_name_parse_free'
cp-support.o: In function `cp_class_name_from_physname':
/opt/vectrex/binutils-gdb/gdb/cp-support.c:743: undefined reference to `cp_demangled_name_parse_free'
/opt/vectrex/binutils-gdb/gdb/cp-support.c:738: undefined reference to `cp_comp_to_string'
cp-support.o: In function `method_name_from_physname':
/opt/vectrex/binutils-gdb/gdb/cp-support.c:826: undefined reference to `cp_comp_to_string'
/opt/vectrex/binutils-gdb/gdb/cp-support.c:830: undefined reference to `cp_demangled_name_parse_free'
cp-support.o: In function `cp_func_name':
/opt/vectrex/binutils-gdb/gdb/cp-support.c:847: undefined reference to `cp_demangled_name_to_comp'
/opt/vectrex/binutils-gdb/gdb/cp-support.c:855: undefined reference to `cp_comp_to_string'
/opt/vectrex/binutils-gdb/gdb/cp-support.c:857: undefined reference to `cp_demangled_name_parse_free'
cp-support.o: In function `cp_remove_params':
/opt/vectrex/binutils-gdb/gdb/cp-support.c:876: undefined reference to `cp_demangled_name_to_comp'
/opt/vectrex/binutils-gdb/gdb/cp-support.c:903: undefined reference to `cp_demangled_name_parse_free'
/opt/vectrex/binutils-gdb/gdb/cp-support.c:901: undefined reference to `cp_comp_to_string'
cp-support.o: In function `do_demangled_name_parse_free_cleanup':
/opt/vectrex/binutils-gdb/gdb/cp-support.c:108: undefined reference to `cp_demangled_name_parse_free'
collect2: error: ld returned 1 exit status
Makefile:1174: recipe for target 'gdb' failed
make[2]: *** [gdb] Error 1
make[2]: Leaving directory '/opt/vectrex/binutils-gdb/gdb'
Makefile:8590: recipe for target 'all-gdb' failed
make[1]: *** [all-gdb] Error 2
make[1]: Leaving directory '/opt/vectrex/binutils-gdb'
Makefile:827: recipe for target 'all' failed
make: *** [all] Error 2

删除整个目录并重新下载后,makefile 全部正确(没有丢失目录),并且 make 和 make 安装完全完成。所以也许不需要对makefile 进行修改,我只需要安装bison、flex 和makeinfo。

于 2018-09-24T06:48:21.710 回答