Bug 42390 - libowt-tg на aarch64 теряет статические библиотеки из libabseil-cpp-devel
Summary: libowt-tg на aarch64 теряет статические библиотеки из libabseil-cpp-devel
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: libowt-tg (show other bugs)
Version: unstable
Hardware: aarch64 Linux
: P5 normal
Assignee: Vitaly Lipatov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-04-10 21:18 MSK by Vitaly Lipatov
Modified: 2022-04-10 21:18 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly Lipatov 2022-04-10 21:18:42 MSK
Непонятным образом уже много версий подряд
libowt-tg теряет статические библиотеки из libabseil-cpp-devel
при сборке на aarch64.

Бдительный verify-elf выдаёт ошибку:
[00:03:10] verify-elf: ERROR: ./usr/lib64/libtg_owt.so.0.0.0: undefined symbol: _ZN4absl12lts_2021110214ascii_internal13kPropertyBitsE
[00:03:10] verify-elf: ERROR: ./usr/lib64/libtg_owt.so.0.0.0: undefined symbol: _ZN4absl12lts_2021110220StartsWithIgnoreCaseESt17basic_string_viewIcSt11char_traitsIcEES4_
[00:03:10] verify-elf: ERROR: ./usr/lib64/libtg_owt.so.0.0.0: undefined symbol: _ZN4absl12lts_2021110215AsciiStrToLowerEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
[00:03:10] verify-elf: ERROR: ./usr/lib64/libtg_owt.so.0.0.0: undefined symbol: _ZN4absl12lts_2021110216EqualsIgnoreCaseESt17basic_string_viewIcSt11char_traitsIcEES4_
[00:03:10] verify-elf: ERROR: ./usr/lib64/libtg_owt.so.0.0.0: undefined symbol: _ZN4absl12lts_2021110213base_internal18ThrowStdOutOfRangeEPKc

Это следующие символы (через c++filt):
absl::lts_20211102::ascii_internal::kPropertyBits
absl::lts_20211102::StartsWithIgnoreCase(std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >)
absl::lts_20211102::AsciiStrToLower(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)
absl::lts_20211102::EqualsIgnoreCase(std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >)
absl::lts_20211102::base_internal::ThrowStdOutOfRange(char const*)

То есть пропущены библиотеки
/usr/lib64/libabsl_strings.a
/usr/lib64/libabsl_throw_delegate.a

Проверил, что напрямую и через cmake всё находится и линкуется:
$ cat CMakeLists.txt
cmake_minimum_required(VERSION 3.16)
project (HELLO)

add_executable (hello main.cc)

find_package(absl)

if (absl_FOUND)
    target_link_libraries(hello
            LINK_PUBLIC
                absl::strings
            )
endif()



$ cat main.cc 
#include <absl/strings/ascii.h>
#include <iostream>

int main()
{
    std::string s = "Hello!";
    std::cout << s << std::endl;
    s = absl::AsciiStrToLower(s);
    std::cout << s << std::endl;
    return 0;
}


В итоге выяснилось, что библиотек банально нет в строке линковки:

/usr/bin/c++ -fPIC -pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -fPIC -O2 -g -DNDEBUG -shared -Wl,-soname,libtg_owt.so.0 -o libtg_owt.so.0.0.0 @CMakeFiles/tg_owt.dir/objects1.rsp  /usr/lib64/libpipewire-0.3.so /usr/lib64/libgio-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libglib-2.0.so /usr/lib64/libgio-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libglib-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libglib-2.0.so /usr/lib64/libglib-2.0.so /usr/lib64/libssl.so /usr/lib64/libcrypto.so /usr/lib64/libavcodec.so /usr/lib64/libavformat.so /usr/lib64/libavutil.so /usr/lib64/libswscale.so /usr/lib64/libswresample.so /usr/lib64/libopus.so /usr/lib64/libopenh264.so /usr/lib64/libusrsctp.so /usr/lib64/libvpx.so /usr/lib64/libm.so -lyuv /usr/lib64/libX11.so /usr/lib64/libXcomposite.so /usr/lib64/libXdamage.so /usr/lib64/libXext.so /usr/lib64/libXfixes.so /usr/lib64/libXrender.so /usr/lib64/libXrandr.so /usr/lib64/libXtst.so /usr/lib64/libgio-2.0.so /usr/lib64/libgio-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libglib-2.0.so /usr/lib64/libavcodec.so /usr/lib64/libavformat.so /usr/lib64/libavutil.so /usr/lib64/libswscale.so /usr/lib64/libswresample.so /usr/lib64/libopus.so /usr/lib64/libopenh264.so /usr/lib64/libusrsctp.so /usr/lib64/libvpx.so /usr/lib64/libm.so -lyuv /usr/lib64/libX11.so /usr/lib64/libXcomposite.so /usr/lib64/libXdamage.so /usr/lib64/libXext.so /usr/lib64/libXfixes.so /usr/lib64/libXrender.so /usr/lib64/libXrandr.so /usr/lib64/libXtst.so /usr/lib64/libprotobuf.so /usr/lib64/libssl.so /usr/lib64/libcrypto.so 


А на x86_64 они идут сразу после /usr/lib64/libXtst.so