当试图构建一些测试用例(只是用Ada编写的程序)时,我会得到以下错误:
gcc -c -shared decimaltests.adb
gnatbind -x decimaltests.ali
gnatlink decimaltests.ali -lGenerics -lNumerics -lTesting
/usr/bin/ld: decimaltests: hidden symbol `_Unwind_Resume' in
/usr/lib/gcc/x86_64-pc-linux-gnu/7.2.1/libgcc_eh.a(unwind-dw2.o) is referenced by DSO
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
gnatlink: error when calling /usr/bin/gcc
gnatmake: *** link failed.显然,我使用gnatmake -shared *.ad{b,s} -largs -lGenerics -lNumerics -lTesting构建它们--这并不是构建源代码的问题,但为了进一步确认,我将源代码复制到这个目录中,并使用gnatmake -shared *.ad{b,s}构建测试,后者构建得很好。
依赖库被构建并安装到路径蚊虫搜索中。这似乎不是一个不找到那些的问题。不知道这是怎么回事。
所有的库都是用gnatmake -O2 -fPIC -shared *.ad{b,s}以及任何相关的库依赖构建的。所有依赖于这些库的库仍然可以构建。甚至只有依赖于库的程序才会抛出这个错误,而且总是相同的错误。
更新:使用gprbuild构建库,然后用gprinstall安装它们,看起来也是一样的,但现在的错误如下:
decimaltests.o: In function `_ada_decimaltests':
decimaltests.adb:(.text+0x43): undefined reference to `testing__start'
decimaltests.adb:(.text+0x4a): undefined reference to
`generics__testing__default_tolerance'
decimaltests.adb:(.text+0x9e): undefined reference to
`generics__testing__default_tolerance'
decimaltests.adb:(.text+0x108): undefined reference to
`generics__testing__default_tolerance'
decimaltests.adb:(.text+0x172): undefined reference to
`generics__testing__default_tolerance'
decimaltests.adb:(.text+0x1dc): undefined reference to
`generics__testing__default_tolerance'
decimaltests.o:decimaltests.adb:(.text+0x23f): more undefined references to
`generics__testing__default_tolerance' follow
decimaltests.o: In function `_ada_decimaltests':
decimaltests.adb:(.text+0x14f5): undefined reference to `testing__stop'
/usr/lib/numerics//libNumerics.so: undefined reference to
`generics__testing__not_started@SYMS'
/usr/lib/numerics//libNumerics.so: undefined reference to
`generics__testing__pass@SYMS'
/usr/lib/numerics//libNumerics.so: undefined reference to
`generics__testing__fail@SYMS'
collect2: error: ld returned 1 exit status
gprbuild: link of decimaltests.adb failed因此,我查看了两个构建方法的符号表,并注意到,在这两种情况下,符号都是绝对存在的,但是引用它似乎是错误的位置。我将尝试在不同的平台/编译器上构建,如果出现任何相关的情况,我将再次更新。
发布于 2018-01-19 15:04:03
这两个进程都正确地构建了库和测试程序,并且测试程序在不同的平台上正常运行。为了进一步确认这是一个错误,我安装了一个不同的GCC工具链,并重复了原平台下的构建,这个问题并没有出现。我要提交一份窃听器报告。
https://stackoverflow.com/questions/48312080
复制相似问题