首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gnat构建的链接库的问题

使用gnat构建的链接库的问题
EN

Stack Overflow用户
提问于 2018-01-18 00:22:13
回答 1查看 1.2K关注 0票数 0

当试图构建一些测试用例(只是用Ada编写的程序)时,我会得到以下错误:

代码语言:javascript
复制
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安装它们,看起来也是一样的,但现在的错误如下:

代码语言:javascript
复制
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

因此,我查看了两个构建方法的符号表,并注意到,在这两种情况下,符号都是绝对存在的,但是引用它似乎是错误的位置。我将尝试在不同的平台/编译器上构建,如果出现任何相关的情况,我将再次更新。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-19 15:04:03

这两个进程都正确地构建了库和测试程序,并且测试程序在不同的平台上正常运行。为了进一步确认这是一个错误,我安装了一个不同的GCC工具链,并重复了原平台下的构建,这个问题并没有出现。我要提交一份窃听器报告。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48312080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档