microsoft / vcpkg

C++ Library Manager for Windows, Linux, and MacOS
MIT License
22.87k stars 6.31k forks source link

[folly] Build error on fedora, ld: undefined reference to `cplus_demangle_v3_callback' #25214

Closed uemanon closed 2 years ago

uemanon commented 2 years ago

Host Environment

To Reproduce Steps to reproduce the behavior: ./vcpkg install folly

Failure logs vcpkg-tool version: 2022-05-05-67e17c1782801cf481be9ac0b3765dff3e4bdeb8 vcpkg-scripts version: 8e1f46de1 2022-06-10 (3 days ago)

here is part of log at path .../vcpkg/buildtrees/folly/install-x64-linux-dbg-out.log:

[294/300] : && /usr/bin/cmake -E rm -f libfolly.a && /usr/bin/ar qc libfolly.a  CMakeFiles/folly_base.dir/folly/CancellationToken.cpp.o CMakeFiles/folly_base.dir/folly/ClockGettimeWrappers.cpp.o CMakeFiles/folly_base.dir/folly/Conv.cpp.o CMakeFiles/folly_base.dir/folly/Demangle.cpp.o CMakeFiles/folly_base.dir/folly/ExceptionString.cpp.o CMakeFiles/folly_base.dir/folly/ExceptionWrapper.cpp.o CMakeFiles/folly_base.dir/folly/Executor.cpp.o CMakeFiles/folly_base.dir/folly/File.cpp.o CMakeFiles/folly_base.dir/folly/FileUtil.cpp.o CMakeFiles/folly_base.dir/folly/Fingerprint.cpp.o CMakeFiles/folly_base.dir/folly/FollyMemcpy.cpp.o CMakeFiles/folly_base.dir/folly/FollyMemset.cpp.o CMakeFiles/folly_base.dir/folly/Format.cpp.o CMakeFiles/folly_base.dir/folly/GroupVarint.cpp.o CMakeFiles/folly_base.dir/folly/IPAddress.cpp.o CMakeFiles/folly_base.dir/folly/IPAddressV4.cpp.o CMakeFiles/folly_base.dir/folly/IPAddressV6.cpp.o CMakeFiles/folly_base.dir/folly/MacAddress.cpp.o CMakeFiles/folly_base.dir/folly/MicroLock.cpp.o CMakeFiles/folly_base.dir/folly/Random.cpp.o CMakeFiles/folly_base.dir/folly/ScopeGuard.cpp.o CMakeFiles/folly_base.dir/folly/SharedMutex.cpp.o CMakeFiles/folly_base.dir/folly/Singleton.cpp.o CMakeFiles/folly_base.dir/folly/SocketAddress.cpp.o CMakeFiles/folly_base.dir/folly/String.cpp.o CMakeFiles/folly_base.dir/folly/Subprocess.cpp.o CMakeFiles/folly_base.dir/folly/TimeoutQueue.cpp.o CMakeFiles/folly_base.dir/folly/Try.cpp.o CMakeFiles/folly_base.dir/folly/Unicode.cpp.o CMakeFiles/folly_base.dir/folly/Uri.cpp.o CMakeFiles/folly_base.dir/folly/dynamic.cpp.o CMakeFiles/folly_base.dir/folly/json.cpp.o CMakeFiles/folly_base.dir/folly/json_patch.cpp.o CMakeFiles/folly_base.dir/folly/json_pointer.cpp.o CMakeFiles/folly_base.dir/folly/compression/Compression.cpp.o CMakeFiles/folly_base.dir/folly/compression/CompressionContextPoolSingletons.cpp.o CMakeFiles/folly_base.dir/folly/compression/Zlib.cpp.o CMakeFiles/folly_base.dir/folly/compression/Zstd.cpp.o CMakeFiles/folly_base.dir/folly/concurrency/CacheLocality.cpp.o CMakeFiles/folly_base.dir/folly/concurrency/DeadlockDetector.cpp.o CMakeFiles/folly_base.dir/folly/container/detail/F14Table.cpp.o CMakeFiles/folly_base.dir/folly/detail/AsyncTrace.cpp.o CMakeFiles/folly_base.dir/folly/detail/Futex.cpp.o CMakeFiles/folly_base.dir/folly/detail/IPAddress.cpp.o CMakeFiles/folly_base.dir/folly/detail/MemoryIdler.cpp.o CMakeFiles/folly_base.dir/folly/detail/RangeCommon.cpp.o CMakeFiles/folly_base.dir/folly/detail/RangeSse42.cpp.o CMakeFiles/folly_base.dir/folly/detail/SocketFastOpen.cpp.o CMakeFiles/folly_base.dir/folly/detail/Sse.cpp.o CMakeFiles/folly_base.dir/folly/detail/StaticSingletonManager.cpp.o CMakeFiles/folly_base.dir/folly/detail/ThreadLocalDetail.cpp.o CMakeFiles/folly_base.dir/folly/detail/UniqueInstance.cpp.o CMakeFiles/folly_base.dir/folly/executors/CPUThreadPoolExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/Codel.cpp.o CMakeFiles/folly_base.dir/folly/executors/EDFThreadPoolExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/ExecutorWithPriority.cpp.o CMakeFiles/folly_base.dir/folly/executors/GlobalExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/GlobalThreadPoolList.cpp.o CMakeFiles/folly_base.dir/folly/executors/IOThreadPoolDeadlockDetectorObserver.cpp.o CMakeFiles/folly_base.dir/folly/executors/IOThreadPoolExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/InlineExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/ManualExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/MeteredExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/QueueObserver.cpp.o CMakeFiles/folly_base.dir/folly/executors/QueuedImmediateExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/SerialExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/StrandExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/ThreadPoolExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/ThreadedExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/TimedDrivableExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/TimekeeperScheduledExecutor.cpp.o CMakeFiles/folly_base.dir/folly/experimental/AtomicReadMostlyMainPtr.cpp.o CMakeFiles/folly_base.dir/folly/experimental/DynamicParser.cpp.o CMakeFiles/folly_base.dir/folly/experimental/EnvUtil.cpp.o CMakeFiles/folly_base.dir/folly/experimental/FunctionScheduler.cpp.o CMakeFiles/folly_base.dir/folly/experimental/JSONSchema.cpp.o CMakeFiles/folly_base.dir/folly/experimental/JemallocHugePageAllocator.cpp.o CMakeFiles/folly_base.dir/folly/experimental/JemallocNodumpAllocator.cpp.o CMakeFiles/folly_base.dir/folly/experimental/NestedCommandLineApp.cpp.o CMakeFiles/folly_base.dir/folly/experimental/ProgramOptions.cpp.o CMakeFiles/folly_base.dir/folly/experimental/QuotientMultiSet.cpp.o CMakeFiles/folly_base.dir/folly/experimental/STTimerFDTimeoutManager.cpp.o CMakeFiles/folly_base.dir/folly/experimental/Select64.cpp.o CMakeFiles/folly_base.dir/folly/experimental/TestUtil.cpp.o CMakeFiles/folly_base.dir/folly/experimental/ThreadWheelTimekeeperHighRes.cpp.o CMakeFiles/folly_base.dir/folly/experimental/ThreadedRepeatingFunctionRunner.cpp.o CMakeFiles/folly_base.dir/folly/experimental/TimerFD.cpp.o CMakeFiles/folly_base.dir/folly/experimental/TimerFDTimeoutManager.cpp.o CMakeFiles/folly_base.dir/folly/experimental/bser/Dump.cpp.o CMakeFiles/folly_base.dir/folly/experimental/bser/Load.cpp.o CMakeFiles/folly_base.dir/folly/experimental/channels/RateLimiter.cpp.o CMakeFiles/folly_base.dir/folly/experimental/coro/Baton.cpp.o CMakeFiles/folly_base.dir/folly/experimental/coro/Mutex.cpp.o CMakeFiles/folly_base.dir/folly/experimental/coro/SharedMutex.cpp.o CMakeFiles/folly_base.dir/folly/experimental/coro/detail/Malloc.cpp.o CMakeFiles/folly_base.dir/folly/experimental/crypto/Blake2xb.cpp.o CMakeFiles/folly_base.dir/folly/experimental/crypto/LtHash.cpp.o CMakeFiles/folly_base.dir/folly/experimental/crypto/detail/MathOperation_AVX2.cpp.o CMakeFiles/folly_base.dir/folly/experimental/crypto/detail/MathOperation_SSE2.cpp.o CMakeFiles/folly_base.dir/folly/experimental/crypto/detail/MathOperation_Simple.cpp.o CMakeFiles/folly_base.dir/folly/experimental/exception_tracer/ExceptionCounterLib.cpp.o CMakeFiles/folly_base.dir/folly/experimental/exception_tracer/ExceptionStackTraceLib.cpp.o CMakeFiles/folly_base.dir/folly/experimental/exception_tracer/ExceptionTracer.cpp.o CMakeFiles/folly_base.dir/folly/experimental/exception_tracer/ExceptionTracerLib.cpp.o CMakeFiles/folly_base.dir/folly/experimental/exception_tracer/SmartExceptionStackTraceHooks.cpp.o CMakeFiles/folly_base.dir/folly/experimental/exception_tracer/SmartExceptionTracer.cpp.o CMakeFiles/folly_base.dir/folly/experimental/exception_tracer/SmartExceptionTracerSingleton.cpp.o CMakeFiles/folly_base.dir/folly/experimental/exception_tracer/StackTrace.cpp.o CMakeFiles/folly_base.dir/folly/experimental/io/AsyncBase.cpp.o CMakeFiles/folly_base.dir/folly/experimental/io/AsyncIO.cpp.o CMakeFiles/folly_base.dir/folly/experimental/io/FsUtil.cpp.o CMakeFiles/folly_base.dir/folly/experimental/io/HugePages.cpp.o CMakeFiles/folly_base.dir/folly/experimental/io/IoUring.cpp.o CMakeFiles/folly_base.dir/folly/experimental/io/IoUringBackend.cpp.o CMakeFiles/folly_base.dir/folly/experimental/io/SimpleAsyncIO.cpp.o CMakeFiles/folly_base.dir/folly/experimental/observer/detail/Core.cpp.o CMakeFiles/folly_base.dir/folly/experimental/observer/detail/ObserverManager.cpp.o CMakeFiles/folly_base.dir/folly/experimental/settings/Settings.cpp.o CMakeFiles/folly_base.dir/folly/experimental/symbolizer/Dwarf.cpp.o CMakeFiles/folly_base.dir/folly/experimental/symbolizer/DwarfImpl.cpp.o CMakeFiles/folly_base.dir/folly/experimental/symbolizer/DwarfLineNumberVM.cpp.o CMakeFiles/folly_base.dir/folly/experimental/symbolizer/DwarfSection.cpp.o CMakeFiles/folly_base.dir/folly/experimental/symbolizer/DwarfUtil.cpp.o CMakeFiles/folly_base.dir/folly/experimental/symbolizer/Elf.cpp.o CMakeFiles/folly_base.dir/folly/experimental/symbolizer/ElfCache.cpp.o CMakeFiles/folly_base.dir/folly/experimental/symbolizer/LineReader.cpp.o CMakeFiles/folly_base.dir/folly/experimental/symbolizer/SignalHandler.cpp.o CMakeFiles/folly_base.dir/folly/experimental/symbolizer/StackTrace.cpp.o CMakeFiles/folly_base.dir/folly/experimental/symbolizer/SymbolizePrinter.cpp.o CMakeFiles/folly_base.dir/folly/experimental/symbolizer/SymbolizedFrame.cpp.o CMakeFiles/folly_base.dir/folly/experimental/symbolizer/Symbolizer.cpp.o CMakeFiles/folly_base.dir/folly/ext/test_ext.cpp.o CMakeFiles/folly_base.dir/folly/external/farmhash/farmhash.cpp.o CMakeFiles/folly_base.dir/folly/fibers/BatchSemaphore.cpp.o CMakeFiles/folly_base.dir/folly/fibers/Baton.cpp.o CMakeFiles/folly_base.dir/folly/fibers/Fiber.cpp.o CMakeFiles/folly_base.dir/folly/fibers/FiberManager.cpp.o CMakeFiles/folly_base.dir/folly/fibers/GuardPageAllocator.cpp.o CMakeFiles/folly_base.dir/folly/fibers/Semaphore.cpp.o CMakeFiles/folly_base.dir/folly/fibers/SemaphoreBase.cpp.o CMakeFiles/folly_base.dir/folly/fibers/SimpleLoopController.cpp.o CMakeFiles/folly_base.dir/folly/fibers/async/Async.cpp.o CMakeFiles/folly_base.dir/folly/fibers/detail/AtomicBatchDispatcher.cpp.o CMakeFiles/folly_base.dir/folly/futures/Barrier.cpp.o CMakeFiles/folly_base.dir/folly/futures/Future.cpp.o CMakeFiles/folly_base.dir/folly/futures/ManualTimekeeper.cpp.o CMakeFiles/folly_base.dir/folly/futures/Promise.cpp.o CMakeFiles/folly_base.dir/folly/futures/SharedPromise.cpp.o CMakeFiles/folly_base.dir/folly/futures/ThreadWheelTimekeeper.cpp.o CMakeFiles/folly_base.dir/folly/futures/detail/Core.cpp.o CMakeFiles/folly_base.dir/folly/hash/Checksum.cpp.o CMakeFiles/folly_base.dir/folly/hash/SpookyHashV1.cpp.o CMakeFiles/folly_base.dir/folly/hash/SpookyHashV2.cpp.o CMakeFiles/folly_base.dir/folly/hash/detail/ChecksumDetail.cpp.o CMakeFiles/folly_base.dir/folly/hash/detail/Crc32CombineDetail.cpp.o CMakeFiles/folly_base.dir/folly/hash/detail/Crc32cDetail.cpp.o CMakeFiles/folly_base.dir/folly/init/Init.cpp.o CMakeFiles/folly_base.dir/folly/init/Phase.cpp.o CMakeFiles/folly_base.dir/folly/io/Cursor.cpp.o CMakeFiles/folly_base.dir/folly/io/GlobalShutdownSocketSet.cpp.o CMakeFiles/folly_base.dir/folly/io/IOBuf.cpp.o CMakeFiles/folly_base.dir/folly/io/IOBufIovecBuilder.cpp.o CMakeFiles/folly_base.dir/folly/io/IOBufQueue.cpp.o CMakeFiles/folly_base.dir/folly/io/RecordIO.cpp.o CMakeFiles/folly_base.dir/folly/io/ShutdownSocketSet.cpp.o CMakeFiles/folly_base.dir/folly/io/SocketOptionMap.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncPipe.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncSSLSocket.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncServerSocket.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncSignalHandler.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncSocket.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncSocketException.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncTimeout.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncUDPSocket.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventBase.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventBaseBackendBase.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventBaseLocal.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventBaseManager.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventBaseThread.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventHandler.cpp.o CMakeFiles/folly_base.dir/folly/io/async/HHWheelTimer.cpp.o CMakeFiles/folly_base.dir/folly/io/async/PasswordInFile.cpp.o CMakeFiles/folly_base.dir/folly/io/async/Request.cpp.o CMakeFiles/folly_base.dir/folly/io/async/SSLContext.cpp.o CMakeFiles/folly_base.dir/folly/io/async/SSLOptions.cpp.o CMakeFiles/folly_base.dir/folly/io/async/ScopedEventBaseThread.cpp.o CMakeFiles/folly_base.dir/folly/io/async/TerminateCancellationToken.cpp.o CMakeFiles/folly_base.dir/folly/io/async/TimeoutManager.cpp.o CMakeFiles/folly_base.dir/folly/io/async/VirtualEventBase.cpp.o CMakeFiles/folly_base.dir/folly/io/async/ssl/OpenSSLUtils.cpp.o CMakeFiles/folly_base.dir/folly/io/async/ssl/SSLErrors.cpp.o CMakeFiles/folly_base.dir/folly/io/coro/ServerSocket.cpp.o CMakeFiles/folly_base.dir/folly/io/coro/Transport.cpp.o CMakeFiles/folly_base.dir/folly/lang/CString.cpp.o CMakeFiles/folly_base.dir/folly/lang/Exception.cpp.o CMakeFiles/folly_base.dir/folly/lang/SafeAssert.cpp.o CMakeFiles/folly_base.dir/folly/lang/ToAscii.cpp.o CMakeFiles/folly_base.dir/folly/logging/AsyncFileWriter.cpp.o CMakeFiles/folly_base.dir/folly/logging/AsyncLogWriter.cpp.o CMakeFiles/folly_base.dir/folly/logging/BridgeFromGoogleLogging.cpp.o CMakeFiles/folly_base.dir/folly/logging/CustomLogFormatter.cpp.o CMakeFiles/folly_base.dir/folly/logging/FileHandlerFactory.cpp.o CMakeFiles/folly_base.dir/folly/logging/FileWriterFactory.cpp.o CMakeFiles/folly_base.dir/folly/logging/GlogStyleFormatter.cpp.o CMakeFiles/folly_base.dir/folly/logging/ImmediateFileWriter.cpp.o CMakeFiles/folly_base.dir/folly/logging/Init.cpp.o CMakeFiles/folly_base.dir/folly/logging/InitWeak.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogCategory.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogCategoryConfig.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogConfig.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogConfigParser.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogHandlerConfig.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogLevel.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogMessage.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogName.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogStream.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogStreamProcessor.cpp.o CMakeFiles/folly_base.dir/folly/logging/Logger.cpp.o CMakeFiles/folly_base.dir/folly/logging/LoggerDB.cpp.o CMakeFiles/folly_base.dir/folly/logging/ObjectToString.cpp.o CMakeFiles/folly_base.dir/folly/logging/RateLimiter.cpp.o CMakeFiles/folly_base.dir/folly/logging/StandardLogHandler.cpp.o CMakeFiles/folly_base.dir/folly/logging/StandardLogHandlerFactory.cpp.o CMakeFiles/folly_base.dir/folly/logging/StreamHandlerFactory.cpp.o CMakeFiles/folly_base.dir/folly/logging/xlog.cpp.o CMakeFiles/folly_base.dir/folly/memory/MallctlHelper.cpp.o CMakeFiles/folly_base.dir/folly/memory/ReentrantAllocator.cpp.o CMakeFiles/folly_base.dir/folly/memory/SanitizeAddress.cpp.o CMakeFiles/folly_base.dir/folly/memory/SanitizeLeak.cpp.o CMakeFiles/folly_base.dir/folly/memory/ThreadCachedArena.cpp.o CMakeFiles/folly_base.dir/folly/memory/detail/MallocImpl.cpp.o CMakeFiles/folly_base.dir/folly/net/NetOps.cpp.o CMakeFiles/folly_base.dir/folly/net/NetOpsDispatcher.cpp.o CMakeFiles/folly_base.dir/folly/net/TcpInfo.cpp.o CMakeFiles/folly_base.dir/folly/net/detail/SocketFileDescriptorMap.cpp.o CMakeFiles/folly_base.dir/folly/portability/Builtins.cpp.o CMakeFiles/folly_base.dir/folly/portability/Dirent.cpp.o CMakeFiles/folly_base.dir/folly/portability/Fcntl.cpp.o CMakeFiles/folly_base.dir/folly/portability/Filesystem.cpp.o CMakeFiles/folly_base.dir/folly/portability/Libgen.cpp.o CMakeFiles/folly_base.dir/folly/portability/Malloc.cpp.o CMakeFiles/folly_base.dir/folly/portability/OpenSSL.cpp.o CMakeFiles/folly_base.dir/folly/portability/PThread.cpp.o CMakeFiles/folly_base.dir/folly/portability/Sched.cpp.o CMakeFiles/folly_base.dir/folly/portability/Sockets.cpp.o CMakeFiles/folly_base.dir/folly/portability/Stdio.cpp.o CMakeFiles/folly_base.dir/folly/portability/Stdlib.cpp.o CMakeFiles/folly_base.dir/folly/portability/String.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysFile.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysMembarrier.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysMman.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysResource.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysStat.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysTime.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysUio.cpp.o CMakeFiles/folly_base.dir/folly/portability/Time.cpp.o CMakeFiles/folly_base.dir/folly/portability/Unistd.cpp.o CMakeFiles/folly_base.dir/folly/ssl/Init.cpp.o CMakeFiles/folly_base.dir/folly/ssl/OpenSSLCertUtils.cpp.o CMakeFiles/folly_base.dir/folly/ssl/OpenSSLHash.cpp.o CMakeFiles/folly_base.dir/folly/ssl/SSLSessionManager.cpp.o CMakeFiles/folly_base.dir/folly/ssl/detail/OpenSSLSession.cpp.o CMakeFiles/folly_base.dir/folly/ssl/detail/OpenSSLThreading.cpp.o CMakeFiles/folly_base.dir/folly/stats/QuantileEstimator.cpp.o CMakeFiles/folly_base.dir/folly/stats/TDigest.cpp.o CMakeFiles/folly_base.dir/folly/stats/detail/DoubleRadixSort.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/AsymmetricMemoryBarrier.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/AtomicNotification.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/DistributedMutex.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/Hazptr.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/HazptrThreadPoolExecutor.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/ParkingLot.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/Rcu.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/SanitizeThread.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/WaitOptions.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/detail/Hardware.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/detail/Sleeper.cpp.o CMakeFiles/folly_base.dir/folly/system/AtFork.cpp.o CMakeFiles/folly_base.dir/folly/system/HardwareConcurrency.cpp.o CMakeFiles/folly_base.dir/folly/system/MemoryMapping.cpp.o CMakeFiles/folly_base.dir/folly/system/Pid.cpp.o CMakeFiles/folly_base.dir/folly/system/Shell.cpp.o CMakeFiles/folly_base.dir/folly/system/ThreadId.cpp.o CMakeFiles/folly_base.dir/folly/system/ThreadName.cpp.o CMakeFiles/folly_base.dir/folly/tracing/AsyncStack.cpp.o CMakeFiles/folly_base.dir/folly/io/async/test/ScopedBoundPort.cpp.o CMakeFiles/folly_base.dir/folly/io/async/test/SocketPair.cpp.o CMakeFiles/folly_base.dir/folly/io/async/test/TimeUtil.cpp.o CMakeFiles/folly_base.dir/folly/memcpy.S.o && /usr/bin/ranlib libfolly.a && :
[295/300] : && /usr/bin/cmake -E rm -f folly/logging/example/liblogging_example_lib.a && /usr/bin/ar qc folly/logging/example/liblogging_example_lib.a  folly/logging/example/CMakeFiles/logging_example_lib.dir/lib.cpp.o && /usr/bin/ranlib folly/logging/example/liblogging_example_lib.a && :
[296/300] : && /usr/bin/cmake -E rm -f libfolly_test_util.a && /usr/bin/ar qc libfolly_test_util.a  CMakeFiles/folly_test_util.dir/folly/test/DeterministicSchedule.cpp.o CMakeFiles/folly_test_util.dir/folly/test/JsonTestUtil.cpp.o && /usr/bin/ranlib libfolly_test_util.a && :
[297/300] : && /usr/bin/c++ -fPIC -g -g -Wall -Wextra -rdynamic folly/logging/example/CMakeFiles/logging_example.dir/main.cpp.o -o folly/logging/example/logging_example  folly/logging/example/liblogging_example_lib.a  libfolly.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libfmtd.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libboost_context.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libboost_filesystem.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libboost_program_options.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libboost_regex.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libboost_system.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libboost_thread.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libboost_chrono.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libboost_atomic.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libdouble-conversion.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libglog.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libgflags_debug.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libgflags_debug.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libevent.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libz.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libssl.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libcrypto.a  -ldl  -lsodium  -ldl  -lsodium && :
FAILED: folly/logging/example/logging_example 
: && /usr/bin/c++ -fPIC -g -g -Wall -Wextra -rdynamic folly/logging/example/CMakeFiles/logging_example.dir/main.cpp.o -o folly/logging/example/logging_example  folly/logging/example/liblogging_example_lib.a  libfolly.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libfmtd.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libboost_context.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libboost_filesystem.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libboost_program_options.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libboost_regex.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libboost_system.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libboost_thread.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libboost_chrono.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libboost_atomic.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libdouble-conversion.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libglog.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libgflags_debug.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libgflags_debug.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libevent.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libz.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libssl.a  /root/deps/vcpkg/installed/x64-linux/debug/lib/libcrypto.a  -ldl  -lsodium  -ldl  -lsodium && :
/usr/bin/ld: libfolly.a(Demangle.cpp.o): in function `folly::demangle(char const*, char*, unsigned long)':
/root/deps/vcpkg/buildtrees/folly/src/2.03.21.00-af371d0ebc.clean/folly/Demangle.cpp:165: undefined reference to `cplus_demangle_v3_callback'
/usr/bin/ld: libfolly.a(Demangle.cpp.o):(.data.rel.ro+0x0): undefined reference to `cplus_demangle_v3_callback'
collect2: error: ld returned 1 exit status
[298/300] /usr/bin/c++ -DFMT_LOCALE -DFOLLY_XLOG_STRIP_PREFIXES=\"/root/deps/vcpkg/buildtrees/folly/src/2.03.21.00-af371d0ebc.clean:/root/deps/vcpkg/buildtrees/folly/x64-linux-dbg\" -DGFLAGS_IS_A_DLL=0 -D_GNU_SOURCE -D_REENTRANT -I/root/deps/vcpkg/buildtrees/folly/src/2.03.21.00-af371d0ebc.clean -I/root/deps/vcpkg/buildtrees/folly/x64-linux-dbg -isystem /root/deps/vcpkg/installed/x64-linux/include -fPIC -g -g -Wall -Wextra -fcoroutines -g -std=gnu++1z -finput-charset=UTF-8 -fsigned-char -Wall -Wno-deprecated -Wno-deprecated-declarations -Wno-sign-compare -Wno-unused -Wuninitialized -Wunused-label -Wunused-result -Wshadow-compatible-local -Wno-noexcept-type -faligned-new -fopenmp -std=gnu++17 -MD -MT folly/CMakeFiles/follybenchmark.dir/Benchmark.cpp.o -MF folly/CMakeFiles/follybenchmark.dir/Benchmark.cpp.o.d -o folly/CMakeFiles/follybenchmark.dir/Benchmark.cpp.o -c /root/deps/vcpkg/buildtrees/folly/src/2.03.21.00-af371d0ebc.clean/folly/Benchmark.cpp
ninja: build stopped: subcommand failed.

Additional context I searched for this and checked the location of the libiberty installation, including the header file /usr/include/libiberty.h and the static library /usr/lib64/libiberty.a. How can I fix it?

curoky commented 2 years ago

Firstly, cplus_demangle_v3_callback is from demangle.h which is provided by libiberty.

Secondly, folly use __has_include(<demangle.h>) to detect if it has libiberty rather than relying on FOUND_LIBIBERTY which is checked by cmake. For more details, see following code

#if __has_include(<demangle.h>)

static constexpr auto liberty_demangle = cplus_demangle_v3_callback;

https://github.com/facebook/folly/blob/e7aad188c79cd31e940393d2d855bf20b9cb193f/folly/Demangle.cpp#L61-L64

That means, if you had demangle.h in gcc's default search path, and cmake didn't found libiberty, therefore libiberty.a would't be linked, so you would have that's error message.

As for why cmake can't find libiberty although demangle.h alreay exists. We need check https://github.com/facebook/folly/blob/main/CMake/FindLibiberty.cmake#L15-L29

find_path(LIBIBERTY_INCLUDE_DIR NAMES libiberty.h PATH_SUFFIXES libiberty)
mark_as_advanced(LIBIBERTY_INCLUDE_DIR)

find_library(LIBIBERTY_LIBRARY NAMES iberty)
mark_as_advanced(LIBIBERTY_LIBRARY)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
  LIBIBERTY
  REQUIRED_VARS LIBIBERTY_LIBRARY LIBIBERTY_INCLUDE_DIR)

if(LIBIBERTY_FOUND)
  set(LIBIBERTY_LIBRARIES ${LIBIBERTY_LIBRARY})
  set(LIBIBERTY_INCLUDE_DIRS ${LIBIBERTY_INCLUDE_DIR})
endif()

From your logs, libiberty.a is located at /usr/lib64/libiberty.a, I guesse the path /usr/lib64/ is not in find_library's lookup list. The search process of find_library is in https://cmake.org/cmake/help/latest/command/find_library.html.

The easiest way to fix it is deleting demangle.h from your system include path, perhaps /usr/include/demangle.h, If you don't need folly's demangle. Otherwise, you need to give find_library some hints so that it can find libiberty correctly.

curoky commented 2 years ago

I had checked my environment which is in ubuntu, and I found that libiberty.h is under /usr/include/libiberty, not in /usr/include directly.

By checking FindLibiberty.cmake again, we can see that find_path used PATH_SUFFIXES libiberty.

Therefore, libiberty.h will not be found when it's installed at /usr/include/libiberty.h.

dg0yt commented 2 years ago

PATH_SUFFIXES are "additional subdirectories to check below each directory location otherwise considered" so AFAIU they don't exclude the original location.

curoky commented 2 years ago

PATH_SUFFIXES are "additional subdirectories to check below each directory location otherwise considered" so AFAIU they don't exclude the original location.

@dg0yt All right, we just need add some logs for LIBIBERTY_INCLUDE_DIR LIBIBERTY_LIBRARY in FindLibiberty.cmake.

uemanon commented 2 years ago

The easiest way to fix it is deleting demangle.h from your system include path, perhaps /usr/include/demangle.h, If you don't need folly's demangle. Otherwise, you need to give find_library some hints so that it can find libiberty correctly.

Thanks for your reply. By removing /usr/include/demangle.h it does make build successful, but for both moving the location of /usr/lib64/libiberty.a or setting CMAKE_LIBRARY_PATH to /usr/lib64 in manifest mode, it doesn't work, perhaps I need to diagnose other causes.

dg0yt commented 2 years ago

PATH_SUFFIXES are "additional subdirectories to check below each directory location otherwise considered" so AFAIU they don't exclude the original location.

@dg0yt All right, we just need add some logs for LIBIBERTY_INCLUDE_DIR LIBIBERTY_LIBRARY in FindLibiberty.cmake.

IMO FindLibiberty.cmake is doing enough with find_package_handle_standard_args, but the rest of the folly build system generally doesn't seem to do enough with find_package success or failure. For this package, there is

find_package(Libiberty)
list(APPEND FOLLY_LINK_LIBRARIES ${LIBIBERTY_LIBRARIES})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBIBERTY_INCLUDE_DIRS})