为buildroot构建openthread时的循环依赖

问题描述 投票:0回答:1

我正在尝试使用 buildroot 为 beaglebone black 构建一个开放线程边界路由器,但遇到以下错误:

CMake Error: The inter-target dependency graph contains the following strongly connected component (cycle):
  "openthread-ftd" of type SHARED_LIBRARY
    depends on "tcplp-ftd" (weak)
  "tcplp-ftd" of type STATIC_LIBRARY
    depends on "openthread-ftd" (weak)
At least one of these targets is not a STATIC_LIBRARY.  Cyclic dependencies are allowed only among static libraries.
CMake Generate step failed.  Build files cannot be regenerated correctly.
make: *** [package/pkg-generic.mk:273: /var/home/joshuajohn/Workspaces/Legion/buildroot/output/build/openthread-thread-reference-20230710/.stamp_configured] Error 1

我已经配置了 buildroot 来构建共享库和静态库,这两个库都来自 openthread 边界路由器子模块。我使用的是 openthread 为 beaglebone 提供的相同配置(在

examples/platforms/beagleboneblack/default
中)。我使用 cmake 和 ninja 作为后端,并像支持的方法一样构建二进制文件,所以这个问题让我难住了。

什么可能导致此问题?我知道 openthread 建议使用他们的设置脚本来设置 openthread,但我将此作为深入研究 buildroots 构建系统的练习。如果需要更多信息,请告诉我。

完整的 openthread 构建日志供参考:

>>> openthread thread-reference-20230710 Downloading
wget --passive-ftp -nd -t 3 -O '/var/home/joshuajohn/Workspaces/Legion/buildroot/output/build/.openthread-thread-reference-20230710.tar.gz.HQOQxh/output' 'https://github.com/openthread/ot-br-posix/archive/thread-reference-20230710/openthr
ead-thread-reference-20230710.tar.gz'
--2023-11-18 16:24:18--  https://github.com/openthread/ot-br-posix/archive/thread-reference-20230710/openthread-thread-reference-20230710.tar.gz
Resolving github.com (github.com)... 20.207.73.82
Connecting to github.com (github.com)|20.207.73.82|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/openthread/ot-br-posix/tar.gz/refs/tags/thread-reference-20230710 [following]
--2023-11-18 16:24:18--  https://codeload.github.com/openthread/ot-br-posix/tar.gz/refs/tags/thread-reference-20230710
Resolving codeload.github.com (codeload.github.com)... 20.207.73.88
Connecting to codeload.github.com (codeload.github.com)|20.207.73.88|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/x-gzip]
Saving to: ‘/var/home/joshuajohn/Workspaces/Legion/buildroot/output/build/.openthread-thread-reference-20230710.tar.gz.HQOQxh/output’

     0K .......... .......... .......... .......... ..........  983K
    50K .......... .......... .......... .......... .......... 1.94M
   100K .......... .......... .......... .......... .......... 29.9M
   150K .......... .......... .......... .......... .......... 2.01M
   200K .......... .......... .......... .......... .......... 22.0M
   250K .......... .......... .......... .......... .......... 40.9M
   300K .......... .......... .......... .......... .......... 43.0M
   350K .......... .......... .......... .......... .......... 42.6M
   400K .......... .......... .......... .......... .......... 2.09M
   450K .......... .......... .......... .......... .......... 32.2M
   500K .......... .......... .......... .......... .......... 59.2M
   550K .......... .......... .......... .......... .......... 33.2M
   600K .......... .......... .......... .......... .......... 72.7M
   650K .......... .......... .......... .......... .......... 65.6M
   700K .......... .......... .......... .......... .......... 66.4M
   750K .......... .......... .......... .......... .......... 54.8M
   800K .......... .......... .......... .......               54.6M=0.1s

2023-11-18 16:24:19 (5.91 MB/s) - ‘/var/home/joshuajohn/Workspaces/Legion/buildroot/output/build/.openthread-thread-reference-20230710.tar.gz.HQOQxh/output’ saved [857965]

WARNING: no hash file for openthread-thread-reference-20230710.tar.gz
>>> openthread thread-reference-20230710 Extracting
rm -rf /var/home/joshuajohn/Workspaces/Legion/buildroot/output/build/openthread-thread-reference-20230710
(git clone https://github.com/openthread/ot-br-posix /var/home/joshuajohn/Workspaces/Legion/buildroot/output/build/openthread-thread-reference-20230710 && cd /var/home/joshuajohn/Workspaces/Legion/buildroot/output/build/openthread-thread-
reference-20230710 && git checkout thread-reference-20230710 && git submodule update --init --recursive --depth 1)
Cloning into '/var/home/joshuajohn/Workspaces/Legion/buildroot/output/build/openthread-thread-reference-20230710'...
Note: switching to 'thread-reference-20230710'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 790dc77514 submodule: bump third_party/openthread/repo from `9fd1da5` to `8bc2504` (#1934)
Submodule 'third_party/cJSON/repo' (https://github.com/DaveGamble/cJSON.git) registered for path 'third_party/cJSON/repo'
Submodule 'third_party/http-parser/repo' (https://github.com/nodejs/http-parser.git) registered for path 'third_party/http-parser/repo'
Submodule 'third_party/openthread/repo' (https://github.com/openthread/openthread.git) registered for path 'third_party/openthread/repo'
Cloning into '/var/home/joshuajohn/Workspaces/Legion/buildroot/output/build/openthread-thread-reference-20230710/third_party/cJSON/repo'...
Cloning into '/var/home/joshuajohn/Workspaces/Legion/buildroot/output/build/openthread-thread-reference-20230710/third_party/http-parser/repo'...
Cloning into '/var/home/joshuajohn/Workspaces/Legion/buildroot/output/build/openthread-thread-reference-20230710/third_party/openthread/repo'...
From https://github.com/DaveGamble/cJSON
 * branch            cf97c6f066d81fdbba4ef722cfd327bbbba2365c -> FETCH_HEAD
Submodule path 'third_party/cJSON/repo': checked out 'cf97c6f066d81fdbba4ef722cfd327bbbba2365c'
From https://github.com/nodejs/http-parser
 * branch            4f15b7d510dc7c6361a26a7c6d2f7c3a17f8d878 -> FETCH_HEAD
Submodule path 'third_party/http-parser/repo': checked out '4f15b7d510dc7c6361a26a7c6d2f7c3a17f8d878'
From https://github.com/openthread/openthread
 * branch            8bc25042ba5cde20605eec2a329c0dff575303f4 -> FETCH_HEAD
Submodule path 'third_party/openthread/repo': checked out '8bc25042ba5cde20605eec2a329c0dff575303f4'
touch /var/home/joshuajohn/Workspaces/Legion/buildroot/output/build/openthread-thread-reference-20230710/.stamp_downloaded
>>> openthread thread-reference-20230710 Patching
>>> openthread thread-reference-20230710 Configuring
(mkdir -p /var/home/joshuajohn/Workspaces/Legion/buildroot/output/build/openthread-thread-reference-20230710/ && cd /var/home/joshuajohn/Workspaces/Legion/buildroot/output/build/openthread-thread-reference-20230710/ && rm -f CMakeCache.tx
t && PATH="/var/home/joshuajohn/Workspaces/Legion/buildroot/output/host/bin:/var/home/joshuajohn/Workspaces/Legion/buildroot/output/host/sbin:/var/home/joshuajohn/.local/bin:/var/home/joshuajohn/.local/opt:/usr/local/sbin:/usr/local/bin:/
usr/sbin:/usr/bin:/sbin:/bin"  /var/home/joshuajohn/Workspaces/Legion/buildroot/output/host/bin/cmake /var/home/joshuajohn/Workspaces/Legion/buildroot/output/build/openthread-thread-reference-20230710/ -G"Unix Makefiles" -DCMAKE_TOOLCHAIN
_FILE="/var/home/joshuajohn/Workspaces/Legion/buildroot/output/host/share/buildroot/toolchainfile.cmake" -DCMAKE_INSTALL_PREFIX="/usr" -DCMAKE_INSTALL_RUNSTATEDIR="/run" -DCMAKE_COLOR_MAKEFILE=OFF -DBUILD_DOC=OFF -DBUILD_DOCS=OFF -DBUILD_
EXAMPLE=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TEST=OFF -DBUILD_TESTS=OFF -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON  -DBUILD_TESTING=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_INSTALL_PREFIX=/var/home/joshuajohn/Workspaces/Legion/buildroot
/output/target/usr -DOTBR_DBUS=ON -DOTBR_FEATURE_FLAGS=ON -DOTBR_DNSSD_DISCOVERY_PROXY=ON -DOTBR_SRP_ADVERTISING_PROXY=ON -DOTBR_INFRA_IF_NAME=eth0 -DOTBR_MDNS=avahi -DOTBR_VERSION= -DOTBR_PACKAGE_VERSION= -DBACKBONE_ROUTER=ON -DOTBR_WEB=
ON )
-- The C compiler identification is GNU 12.3.0
-- The CXX compiler identification is GNU 12.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /var/home/joshuajohn/Workspaces/Legion/buildroot/output/host/bin/arm-buildroot-linux-gnueabihf-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /var/home/joshuajohn/Workspaces/Legion/buildroot/output/host/bin/arm-buildroot-linux-gnueabihf-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /var/home/joshuajohn/Workspaces/Legion/buildroot/output/host/bin/pkg-config (found version "1.6.3")
-- Checking for module 'dbus-1'
--   Found dbus-1, version 1.14.8
-- OTBR package name: OpenThread_BorderRouter
-- Version: 0.3.0-thread-reference-20230710
-- Checking for module 'systemd'
--   Found systemd, version 254
-- OpenThread Source Directory: /var/home/joshuajohn/Workspaces/Legion/buildroot/output/build/openthread-thread-reference-20230710/third_party/openthread/repo
-- OT_APP_CLI=ON
-- OT_APP_NCP=ON
-- OT_APP_RCP=ON
-- OT_FTD=ON
-- OT_MTD=ON
-- OT_RCP=ON
-- OT_THREAD_VERSION=
-- OT_15_4=ON --> OPENTHREAD_CONFIG_RADIO_LINK_IEEE_802_15_4_ENABLE=1
-- OT_ANDROID_NDK=""
-- OT_ANYCAST_LOCATOR=ON --> OPENTHREAD_CONFIG_TMF_ANYCAST_LOCATOR_ENABLE=1
-- OT_ASSERT=""
-- OT_BACKBONE_ROUTER=OFF --> OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE=0
-- OT_BACKBONE_ROUTER_DUA_NDPROXYING=OFF --> OPENTHREAD_CONFIG_BACKBONE_ROUTER_DUA_NDPROXYING_ENABLE=0
-- OT_BACKBONE_ROUTER_MULTICAST_ROUTING=""                                                                                                                                                                                  16:25:02 [90/1375]
-- OT_BORDER_AGENT=ON --> OPENTHREAD_CONFIG_BORDER_AGENT_ENABLE=1
-- OT_BORDER_AGENT_ID=ON --> OPENTHREAD_CONFIG_BORDER_AGENT_ID_ENABLE=1
-- OT_BORDER_ROUTER=ON --> OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE=1
-- OT_BORDER_ROUTING=OFF --> OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE=0
-- OT_BORDER_ROUTING_DHCP6_PD=OFF --> OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE=0
-- OT_BORDER_ROUTING_COUNTERS=ON --> OPENTHREAD_CONFIG_IP6_BR_COUNTERS_ENABLE=1
-- OT_CHANNEL_MANAGER=""
-- OT_CHANNEL_MONITOR=""
-- OT_COAP=ON --> OPENTHREAD_CONFIG_COAP_API_ENABLE=1
-- OT_COAP_BLOCK=""
-- OT_COAP_OBSERVE=""
-- OT_COAPS=ON --> OPENTHREAD_CONFIG_COAP_SECURE_API_ENABLE=1
-- OT_COMMISSIONER=ON --> OPENTHREAD_CONFIG_COMMISSIONER_ENABLE=1
-- OT_CSL_AUTO_SYNC=""
-- OT_CSL_DEBUG=""
-- OT_CSL_RECEIVER=""
-- OT_DATASET_UPDATER=ON --> OPENTHREAD_CONFIG_DATASET_UPDATER_ENABLE=1
-- OT_DHCP6_CLIENT=""
-- OT_DHCP6_SERVER=""
-- OT_DIAGNOSTIC=""
-- OT_DNS_CLIENT=ON --> OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE=1
-- OT_DNS_CLIENT_OVER_TCP=""
-- OT_DNS_DSO=""
-- OT_DNS_UPSTREAM_QUERY=OFF --> OPENTHREAD_CONFIG_DNS_UPSTREAM_QUERY_ENABLE=0
-- OT_DNSSD_SERVER=ON --> OPENTHREAD_CONFIG_DNSSD_SERVER_ENABLE=1
-- OT_DUA=""
-- OT_ECDSA=ON --> OPENTHREAD_CONFIG_ECDSA_ENABLE=1
-- OT_EXTERNAL_HEAP=ON --> OPENTHREAD_CONFIG_HEAP_EXTERNAL_ENABLE=1
-- OT_FIREWALL=ON --> OPENTHREAD_POSIX_CONFIG_FIREWALL_ENABLE=1
-- OT_HISTORY_TRACKER=ON --> OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE=1
-- OT_IP6_FRAGM=""
-- OT_JAM_DETECTION=""
-- OT_JOINER=ON --> OPENTHREAD_CONFIG_JOINER_ENABLE=1
-- OT_LINK_METRICS_INITIATOR=""
-- OT_LINK_METRICS_SUBJECT=ON --> OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE=1
-- OT_LINK_RAW=""
-- OT_LOG_LEVEL_DYNAMIC=ON --> OPENTHREAD_CONFIG_LOG_LEVEL_DYNAMIC_ENABLE=1
-- OT_MAC_FILTER=ON --> OPENTHREAD_CONFIG_MAC_FILTER_ENABLE=1
-- OT_MESH_DIAG=""
-- OT_MESSAGE_USE_HEAP=""
-- OT_MLE_LONG_ROUTES=""
-- OT_MLR=ON --> OPENTHREAD_CONFIG_MLR_ENABLE=1
-- OT_MULTIPLE_INSTANCE=""
-- OT_NAT64_BORDER_ROUTING=OFF --> OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE=0
-- OT_NAT64_TRANSLATOR=OFF --> OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE=0
-- OT_NEIGHBOR_DISCOVERY_AGENT=""
-- OT_NETDATA_PUBLISHER=ON --> OPENTHREAD_CONFIG_NETDATA_PUBLISHER_ENABLE=1
-- OT_NETDIAG_CLIENT=ON --> OPENTHREAD_CONFIG_TMF_NETDIAG_CLIENT_ENABLE=1
-- OT_OPERATIONAL_DATASET_AUTO_INIT=""
-- OT_OTNS=""
-- OT_PING_SENDER=ON --> OPENTHREAD_CONFIG_PING_SENDER_ENABLE=1
-- OT_PLATFORM_NETIF=ON --> OPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE=1
-- OT_PLATFORM_UDP=ON --> OPENTHREAD_CONFIG_PLATFORM_UDP_ENABLE=1
-- OT_REFERENCE_DEVICE=""
-- OT_SERVICE=ON --> OPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE=1
-- OT_SETTINGS_RAM=""
-- OT_SLAAC=ON --> OPENTHREAD_CONFIG_IP6_SLAAC_ENABLE=1
-- OT_SNTP_CLIENT=""
-- OT_SRP_CLIENT=ON --> OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE=1
-- OT_SRP_SERVER=ON --> OPENTHREAD_CONFIG_SRP_SERVER_ENABLE=1
-- OT_TCP=OFF --> OPENTHREAD_CONFIG_TCP_ENABLE=0
-- OT_TIME_SYNC=""
-- OT_TREL=OFF --> OPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE=0                                                                                                                                                               16:41:12 [27/1375]
-- OT_TX_BEACON_PAYLOAD=""
-- OT_UDP_FORWARD=OFF --> OPENTHREAD_CONFIG_UDP_FORWARD_ENABLE=0
-- OT_UPTIME=ON --> OPENTHREAD_CONFIG_UPTIME_ENABLE=1
-- OT_VENDOR_NAME=""
-- OT_VENDOR_MODEL=""
-- OT_VENDOR_SW_VERSION=""
-- OT_POWER_SUPPLY=""
-- OT_RCP_RESTORATION_MAX_COUNT=0
-- OpenThread CMake build type: Release
-- Package Name: OPENTHREAD
-- Setting default package version: 8bc2504
-- Package Version: 8bc2504
-- Thread Version: 1.3 (OPENTHREAD_CONFIG_THREAD_VERSION=OT_THREAD_VERSION_1_3)
-- OpenThread Config File: "openthread-core-posix-config.h"
-- Readline: readline
CMake Deprecation Warning at third_party/openthread/repo/third_party/mbedtls/repo/CMakeLists.txt:23 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


CMake Warning (dev) at third_party/openthread/repo/third_party/mbedtls/repo/CMakeLists.txt:39 (project):
  Policy CMP0048 is not set: project() command manages VERSION variables.
  Run "cmake --help-policy CMP0048" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  The following variable(s) would be set to empty:

    PROJECT_VERSION
    PROJECT_VERSION_MAJOR
    PROJECT_VERSION_MINOR
    PROJECT_VERSION_PATCH
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found Python3: /var/home/joshuajohn/Workspaces/Legion/buildroot/output/host/bin/python3.11 (found version "3.11.6") found components: Interpreter
-- Performing Test C_COMPILER_SUPPORTS_WFORMAT_SIGNEDNESS
-- Performing Test C_COMPILER_SUPPORTS_WFORMAT_SIGNEDNESS - Success
-- Checking for module 'libsystemd'
--   Found libsystemd, version 254
-- Found Protobuf: /var/home/joshuajohn/Workspaces/Legion/buildroot/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libprotobuf.so (found version "3.21.12")
-- Checking for module 'jsoncpp'
--   Found jsoncpp, version 1.9.4
-- Found Boost: /var/home/joshuajohn/Workspaces/Legion/buildroot/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include (found version "1.82.0") found components: filesystem system
-- Configuring done (4.2s)
CMake Error: The inter-target dependency graph contains the following strongly connected component (cycle):
  "openthread-ftd" of type SHARED_LIBRARY
    depends on "tcplp-ftd" (weak)
  "tcplp-ftd" of type STATIC_LIBRARY
    depends on "openthread-ftd" (weak)
At least one of these targets is not a STATIC_LIBRARY.  Cyclic dependencies are allowed only among static libraries.
CMake Generate step failed.  Build files cannot be regenerated correctly.
cmake embedded-linux beagleboneblack buildroot openthread
1个回答
0
投票

我不确定如何解决这个问题,因为我看到了

target_link_libraries
并假设该项目也使用了共享库。我研究了用静态库构建它,并遇到了这个 github 问题。解决方案是将
-DBUILD_SHARED_LIBS=OFF
传递给 cmake 选项。

© www.soinside.com 2019 - 2024. All rights reserved.