abseil / abseil/abseil-cpp

Building Abseil 20230802.0 with MinGW-w64 fails

Đang mở
#1,510 3 bình luận 4 reaction 1 người được giao Được @derekmauro nhận Xem trên GitHub
priority: p2
Ngôn ngữ chính
C++
Star
18.1k
Fork
3.2k
Merge trung bình
20 giờ 36 phút
Pull request đã merge (30 ngày)
1

Mô tả

### Describe the issue

Building Abseil 20230802.0 with MinGW-w64 fails when building with `-DBUILD_SHARED_LIBS:BOOL=ON`

```raw
[213/236] Linking CXX shared library bin\libabsl_synchronization.dll
FAILED: bin/libabsl_synchronization.dll absl/synchronization/libabsl_synchronization.dll.a
cmd.exe /C "cd . && D:\Prog\winlibs64-13.1.0msvcrt\mingw64\bin\x86_64-w64-mingw32-g++.exe -std=c++17 -O3 -DNDEBUG -shared -o bin\libabsl_synchronization.dll -Wl,--out-implib,absl\synchronization\libabsl_synchronization.dll.a -Wl,--major-image-version,0,--minor-image-version,0 absl/synchronization/CMakeFiles/synchronization.dir/barrier.cc.obj absl/synchronization/CMakeFiles/synchronization.dir/blocking_counter.cc.obj absl/synchronization/CMakeFiles/synchronization.dir/internal/create_thread_identity.cc.obj absl/synchronization/CMakeFiles/synchronization.dir/internal/futex_waiter.cc.obj absl/synchronization/CMakeFiles/synchronization.dir/internal/per_thread_sem.cc.obj absl/synchronization/CMakeFiles/synchronization.dir/internal/pthread_waiter.cc.obj absl/synchronization/CMakeFiles/synchronization.dir/internal/sem_waiter.cc.obj absl/synchronization/CMakeFiles/synchronization.dir/internal/stdcpp_waiter.cc.obj absl/synchronization/CMakeFiles/synchronization.dir/internal/waiter_base.cc.obj absl/synchronization/CMakeFiles/synchronization.dir/internal/win32_waiter.cc.obj absl/synchronization/CMakeFiles/synchronization.dir/notification.cc.obj absl/synchronization/CMakeFiles/synchronization.dir/mutex.cc.obj absl/synchronization/libabsl_graphcycles_internal.dll.a absl/synchronization/libabsl_kernel_timeout_internal.dll.a absl/debugging/libabsl_stacktrace.dll.a absl/debugging/libabsl_symbolize.dll.a absl/time/libabsl_time.dll.a absl/time/libabsl_civil_time.dll.a absl/time/libabsl_time_zone.dll.a absl/base/libabsl_malloc_internal.dll.a absl/debugging/libabsl_debugging_internal.dll.a absl/debugging/libabsl_demangle_internal.dll.a absl/strings/libabsl_strings.dll.a absl/numeric/libabsl_int128.dll.a absl/strings/libabsl_string_view.dll.a absl/strings/libabsl_strings_internal.dll.a absl/base/libabsl_base.dll.a -lpthread absl/base/libabsl_spinlock_wait.dll.a absl/base/libabsl_throw_delegate.dll.a absl/base/libabsl_raw_logging_internal.dll.a absl/base/libabsl_log_severity.dll.a -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 -pthread && cd ."
D:/Prog/winlibs64-13.1.0msvcrt/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: absl/synchronization/CMakeFiles/synchronization.dir/internal/per_thread_sem.cc.obj:per_thread_sem:(.text+0x14b): undefined reference to `absl::lts_20230802::synchronization_internal::Win32Waiter::Wait(absl::lts_20230802::synchronization_internal::KernelTimeout)'
D:/Prog/winlibs64-13.1.0msvcrt/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: absl/synchronization/CMakeFiles/synchronization.dir/internal/per_thread_sem.cc.obj:per_thread_sem:(.text+0xb5): undefined reference to `absl::lts_20230802::synchronization_internal::Win32Waiter::Poke()'
D:/Prog/winlibs64-13.1.0msvcrt/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: absl/synchronization/CMakeFiles/synchronization.dir/internal/per_thread_sem.cc.obj:per_thread_sem:(.text+0xc5): undefined reference to `absl::lts_20230802::synchronization_internal::Win32Waiter::Win32Waiter()'
D:/Prog/winlibs64-13.1.0msvcrt/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: absl/synchronization/CMakeFiles/synchronization.dir/internal/per_thread_sem.cc.obj:per_thread_sem:(.text+0xd5): undefined reference to `absl::lts_20230802::synchronization_internal::Win32Waiter::Post()'
D:/Prog/winlibs64-13.1.0msvcrt/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: absl/synchronization/CMakeFiles/synchronization.dir/internal/per_thread_sem.cc.obj:per_thread_sem:(.text+0xe5): undefined reference to `absl::lts_20230802::synchronization_internal::Win32Waiter::Poke()'
collect2.exe: error: ld returned 1 exit status
[214/236] Building CXX object absl/strings/CMakeFiles/cord.dir/cord.cc.obj
ninja: build stopped: subcommand failed.
```

### Steps to reproduce the problem

```sh
cmake.exe -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=ON -DABSL_USE_GOOGLETEST_HEAD:BOOL=OFF -DABSL_RUN_TESTS:BOOL=OFF -DCMAKE_CXX_FLAGS:STRING="-std=c++17" -S. -Bbuild_shared
ninja -Cbuild_shared
```

### What version of Abseil are you using?

20230802.0

### What operating system and version are you using?

Windows 11

### What compiler and version are you using?

Tried with GCC 12.2.0 and 13.1.0

### What build system are you using?

CMake 3.27.1 + Ninja 1.11.1

### Additional context

Builds fine with `-DBUILD_SHARED_LIBS:BOOL=OFF`

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.