根据libopcode编译时出错
下面是一些代码,如下所示: OP说您可以链接到根据libopcode编译时出错,c,gcc,compiler-errors,binutils,C,Gcc,Compiler Errors,Binutils,下面是一些代码,如下所示: OP说您可以链接到-lbfd-lopcodes 然而,对于OpenSuSE,我发现对于libbfd,我需要-lbfd-liberty-lz-ldl 尝试编译时,以下是我的结果: make gcc ./main.c -lbfd -liberty -lz -ldl -lopcodes -g -o bfd_se /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libopcodes.a(arm-dis.o):
-lbfd-lopcodes
然而,对于OpenSuSE,我发现对于libbfd,我需要-lbfd-liberty-lz-ldl
尝试编译时,以下是我的结果:
make
gcc ./main.c -lbfd -liberty -lz -ldl -lopcodes -g -o bfd_se
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libopcodes.a(arm-dis.o): In function `print_insn_neon':
/home/abuild/rpmbuild/BUILD/binutils-2.24/build-dir/opcodes/../../opcodes/arm-dis.c:2927: undefined reference to `floatformat_ieee_single_little'
/home/abuild/rpmbuild/BUILD/binutils-2.24/build-dir/opcodes/../../opcodes/arm-dis.c:2927: undefined reference to `floatformat_to_double'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libopcodes.a(m68k-dis.o): In function `print_insn_arg':
/home/abuild/rpmbuild/BUILD/binutils-2.24/build-dir/opcodes/../../opcodes/m68k-dis.c:1103: undefined reference to `floatformat_m68881_ext'
/home/abuild/rpmbuild/BUILD/binutils-2.24/build-dir/opcodes/../../opcodes/m68k-dis.c:1103: undefined reference to `floatformat_to_double'
/home/abuild/rpmbuild/BUILD/binutils-2.24/build-dir/opcodes/../../opcodes/m68k-dis.c:1099: undefined reference to `floatformat_ieee_double_big'
/home/abuild/rpmbuild/BUILD/binutils-2.24/build-dir/opcodes/../../opcodes/m68k-dis.c:1099: undefined reference to `floatformat_to_double'
/home/abuild/rpmbuild/BUILD/binutils-2.24/build-dir/opcodes/../../opcodes/m68k-dis.c:1095: undefined reference to `floatformat_ieee_single_big'
/home/abuild/rpmbuild/BUILD/binutils-2.24/build-dir/opcodes/../../opcodes/m68k-dis.c:1095: undefined reference to `floatformat_to_double'
collect2: error: ld returned 1 exit status
Makefile:4: recipe for target 'bfd_se' failed
make: *** [bfd_se] Error 1
制作
gcc./main.c-lbfd-liberty-lz-ldl-lopcodes-g-obfd\u se
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../../../../../../lib64/libopcodes.a(arm dis.o):在函数“print\u insn\u neon”中:
/home/abuild/rpmbuild/BUILD/binutils-2.24/BUILD dir/opcodes/./../opcodes/arm dis.c:2927:未定义对“floatformat\u ieee\u single\u little”的引用
/home/abuild/rpmbuild/BUILD/binutils-2.24/BUILD dir/opcodes/./../opcodes/arm dis.c:2927:未定义对“浮动格式”的引用
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../../../../../lib64/libopcodes.a(m68k dis.o):在函数“print\u insn\u arg”中:
/home/abuild/rpmbuild/BUILD/binutils-2.24/BUILD dir/opcodes/./../opcodes/m68k dis.c:1103:对“浮动格式”的未定义引用
/home/abuild/rpmbuild/BUILD/binutils-2.24/BUILD dir/opcodes/./../opcodes/m68k dis.c:1103:未定义对“浮动格式”的引用
/home/abuild/rpmbuild/BUILD/binutils-2.24/BUILD dir/opcodes/./../opcodes/m68k dis.c:1099:未定义对“floatformat\u ieee\u double\u big”的引用
/home/abuild/rpmbuild/BUILD/binutils-2.24/BUILD dir/opcodes/./../opcodes/m68k dis.c:1099:未定义对“浮动格式”的引用
/home/abuild/rpmbuild/BUILD/binutils-2.24/BUILD dir/opcodes/./../opcodes/m68k dis.c:1095:未定义对“floatformat\u ieee\u single\u big”的引用
/home/abuild/rpmbuild/BUILD/binutils-2.24/BUILD dir/opcodes/./../opcodes/m68k dis.c:1095:对“floatformat”的未定义引用
collect2:错误:ld返回了1个退出状态
Makefile:4:目标“bfd_se”的配方失败
make:**[bfd_se]错误1
我需要添加哪些其他标志才能编译此程序?我看到这个错误与不同的体系结构有关,但我不想交叉编译
谢谢
有用信息:
联阿援助团
Linux节点4.0.5-THSU on#1 SMP抢占Thu Jun 18 16:37:06 CDT 2015 x86_64 x86_64 x86_64 GNU/Linux
gcc——版本
gcc(SUSE Linux)4.8.3 20140627[gcc-4_8-branch修订版212064]
版权所有(C)2013免费软件基金会。
这是自由软件;有关复制条件,请参见源。没有
担保甚至不是为了适销性或适合某一特定目的。
objdump——版本(它使用libbfd和libopcode)
GNU objdump(GNU Binutils;openSUSE 13.2)2.24.0.20140403-6.1
版权所有2013免费软件基金会。
这个程序是自由软件;您可以根据
GNU通用公共许可证版本3或(由您选择)任何更高版本。
这个计划绝对没有保证。
大多数情况下,
libbfd
和libopcodes
在标准发行版中不是作为共享库提供的(因为它们不打算链接到)。您必须链接到静态库(libbfd.a
和libopcodes.a
),或者重新编译分发包并将共享库包含在其中(.so
文件)
因此,为了明确起见,请尝试:
gcc ./main.c -liberty -lz -ldl -g -o bfd_se /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libopcodes.a /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libbfd.a
我已经安装了
binutils dev
,但是让我尝试一下,真正的quicknot对.a有效,但它对.so有效,并且它与libbfd.so位于同一目录中。有什么想法吗?我的意思是,你应该试着做以下事情:gcc./main.c-liberty-lz-ldl-g-o bfdúu se/usr/lib/libopcodes.a
(或者两个库的路径)。问题是,这不是很容易移植的-/相反,它会比需要的更大。无论如何,请尝试在您的发行版中查找libbfd*.so
和libopcodes*.so
,如果您没有找到它,这意味着这就是问题所在。我知道binutils开发的Debian(不稳定)包有.so
文件,但在许多发行版中并非如此。
gcc (SUSE Linux) 4.8.3 20140627 [gcc-4_8-branch revision 212064]
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
GNU objdump (GNU Binutils; openSUSE 13.2) 2.24.0.20140403-6.1
Copyright 2013 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
gcc ./main.c -liberty -lz -ldl -g -o bfd_se /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libopcodes.a /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libbfd.a