如主题行中所述,我能够在libz.a静态库中看到某些函数同时显示为“ T”和“ U”。当没有可用的定义时,符号将显示为“ T”,而没有可用的定义时,符号将显示为“ U”。
这可能是编译器/链接器中的错误吗?
我可以找到类似的question,其中两个c ++ API之间有明显的区别。就我而言,符号名称完全没有区别。因此,这肯定是另一个问题。
完全问题错误:
在编译kernel-module-devel时,我面临以下错误。
LINK /tmp/_build/usr/src/module-headers/pc64-stable-build/tools/objtool/objtool /usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/8/../../../../lib64/libelf.a(elf_compress.o):
in function '__libelf_compress': (.text+0x11f): undefined reference to `deflateInit_'
deflateInit_是在zlib中提供的,当我这样做时,
nm /usr/lib64/libz.a | grep -i 'deflateinit_'
00000000000035a0 T deflateInit_
U deflateInit_
有关我的工具链的一些信息对您有帮助:
$ ldd --version ldd(GNU libc)2.28 $ ld -v GNU ld版本2.31.1-25.fc29 $ gcc -v gcc版本8.3.1 20190223(Red Hat 8.3.1-2)(GCC)