gpt4 book ai didi

android - 使用 Android NDK 使用 clang++ 编译 C++ 代码时未定义对 `_Unwind_Resume' 的引用

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:08 26 4
gpt4 key购买 nike

如标题所述,我从 https://developer.android.google.cn/ndk/downloads/index.html 下载 Android NDK。并使用 clang 工具链编译我的测试代码,但我得到了这样的错误:

========== [CC] ==========
mkdir -p /home/projects/llvm/out
/home/projects/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang --target=aarch64-linux-android -O2 -std=c99 -B/home/projects/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/29 -c src/a.c -o /home/projects/llvm/out/a.o
========== [LINK] ==========
mkdir -p /home/projects/llvm/out
/home/projects/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ld -L/home/projects/android-ndk-r20/platforms/android-29/arch-arm64/usr/lib -L/home/projects/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/29 -lc -e main /home/projects/llvm/out/a.o -o /home/projects/llvm/out/a.elf
========== [CPP] ==========
mkdir -p /home/projects/llvm/out
/home/projects/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang++ --target=aarch64-linux-android -O2 -std=gnu++98 -B/home/projects/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/29 -I/home/projects/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/clang-include -c src/b.cpp -o /home/projects/llvm/out/b.o
========== [LINK] ==========
mkdir -p /home/projects/llvm/out
/home/projects/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ld -L/home/projects/android-ndk-r20/platforms/android-29/arch-arm64/usr/lib -L/home/projects/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/29 -L/home/projects/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android -rpath-link /home/projects/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/29 -lc -lc++ -lc++_shared -lc++abi -lstdc++ -e main /home/projects/llvm/out/b.o -o /home/projects/llvm/out/b.elf
/home/projects/llvm/out/b.o: In function `main':
b.cpp:(.text+0x138): undefined reference to `_Unwind_Resume'
/home/projects/llvm/out/b.o: In function `std::__ndk1::basic_istream<char, std::__ndk1::char_traits<char> >& std::__ndk1::operator>><char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >(std::__ndk1::basic_istream<char, std::__ndk1::char_traits<char> >&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >&)':
b.cpp:(.text._ZNSt6__ndk1rsIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS_13basic_istreamIT_T0_EES9_RNS_12basic_stringIS6_S7_T1_EE[_ZNSt6__ndk1rsIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS_13basic_istreamIT_T0_EES9_RNS_12basic_stringIS6_S7_T1_EE]+0x214): undefined reference to `_Unwind_Resume'
/home/projects/llvm/out/b.o: In function `std::__ndk1::basic_ostream<char, std::__ndk1::char_traits<char> >::operator<<(double)':
b.cpp:(.text._ZNSt6__ndk113basic_ostreamIcNS_11char_traitsIcEEElsEd[_ZNSt6__ndk113basic_ostreamIcNS_11char_traitsIcEEElsEd]+0x1b4): undefined reference to `_Unwind_Resume'
/home/projects/llvm/out/b.o: In function `std::__ndk1::basic_istream<char, std::__ndk1::char_traits<char> >& std::__ndk1::__input_arithmetic_with_numeric_limits<int, char, std::__ndk1::char_traits<char> >(std::__ndk1::basic_istream<char, std::__ndk1::char_traits<char> >&, int&)':
b.cpp:(.text._ZNSt6__ndk138__input_arithmetic_with_numeric_limitsIicNS_11char_traitsIcEEEERNS_13basic_istreamIT0_T1_EES7_RT_[_ZNSt6__ndk138__input_arithmetic_with_numeric_limitsIicNS_11char_traitsIcEEEERNS_13basic_istreamIT0_T1_EES7_RT_]+0x144): undefined reference to `_Unwind_Resume'
/home/projects/llvm/out/b.o: In function `std::__ndk1::basic_istream<char, std::__ndk1::char_traits<char> >::sentry::sentry(std::__ndk1::basic_istream<char, std::__ndk1::char_traits<char> >&, bool)':
b.cpp:(.text._ZNSt6__ndk113basic_istreamIcNS_11char_traitsIcEEE6sentryC2ERS3_b[_ZNSt6__ndk113basic_istreamIcNS_11char_traitsIcEEE6sentryC2ERS3_b]+0x1cc): undefined reference to `_Unwind_Resume'
/home/projects/llvm/out/b.o:b.cpp:(.text._ZNSt6__ndk113basic_ostreamIcNS_11char_traitsIcEEE5flushEv[_ZNSt6__ndk113basic_ostreamIcNS_11char_traitsIcEEE5flushEv]+0xf0): more undefined references to `_Unwind_Resume' follow
make: *** [/home/projects/llvm/out/b.elf] Error 1

这是简单的测试:

.
├── Makefile
└── src
├── a.c
└── b.cpp

1 directory, 3 files

生成文件:

ROOT := /home/projects
NDK := $(ROOT)/android-ndk-r20
TOOLCHAIN := $(NDK)/toolchains/llvm/prebuilt/linux-x86_64
TARGET_ARCH := aarch64-linux-android
ANDROID_API_LEVEL := 29

CC := $(TOOLCHAIN)/bin/$(TARGET_ARCH)$(ANDROID_API_LEVEL)-clang
CPP := $(TOOLCHAIN)/bin/$(TARGET_ARCH)$(ANDROID_API_LEVEL)-clang++
LD := $(TOOLCHAIN)/bin/$(TARGET_ARCH)-ld

AFLAGS := --target=$(TARGET_ARCH) -O2 -std=c99 \
-B$(TOOLCHAIN)/sysroot/usr/lib/aarch64-linux-android/29 \

BFLAGS := --target=$(TARGET_ARCH) -O2 -std=gnu++98 \
-B$(TOOLCHAIN)/sysroot/usr/lib/aarch64-linux-android/29 \
-I$(TOOLCHAIN)/clang-include

ALDFLAGS := -L$(NDK)/platforms/android-29/arch-arm64/usr/lib \
-L$(TOOLCHAIN)/sysroot/usr/lib/aarch64-linux-android/29 \
-lc -e main

BLDFLAGS := -L$(NDK)/platforms/android-29/arch-arm64/usr/lib \
-L$(TOOLCHAIN)/sysroot/usr/lib/aarch64-linux-android/29 \
-L$(TOOLCHAIN)/sysroot/usr/lib/aarch64-linux-android \
-rpath-link $(TOOLCHAIN)/sysroot/usr/lib/aarch64-linux-android/29 \
-lc -lc++ -lc++_shared -lc++abi -lstdc++ -e main

BUILD_DIR := $(ROOT)/llvm/out

SRC_C := $(wildcard src/*.c)
SRC_CPP := $(wildcard src/*.cpp)
C_TARGET := a.elf
CPP_TARGET := b.elf
C_OBJS := $(notdir $(SRC_C:%.c=%.o))
CPP_OBJS := $(notdir $(SRC_CPP:%.cpp=%.o))
TARGETS := $(BUILD_DIR)/$(C_TARGET) $(BUILD_DIR)/$(CPP_TARGET)

_all: $(TARGETS)
@echo
@ls -al out

# C
$(BUILD_DIR)/$(C_TARGET): $(BUILD_DIR)/$(C_OBJS)
@echo "========== [LINK] =========="
mkdir -p $(BUILD_DIR)
$(LD) $(ALDFLAGS) -v $< -o $@

$(BUILD_DIR)/$(C_OBJS): $(SRC_C)
@echo "========== [CC] =========="
mkdir -p $(BUILD_DIR)
$(CC) $(AFLAGS) -v -c $< -o $@

# CPP
$(BUILD_DIR)/$(CPP_TARGET): $(BUILD_DIR)/$(CPP_OBJS)
@echo "========== [LINK] =========="
mkdir -p $(BUILD_DIR)
$(LD) $(BLDFLAGS) -v $< -o $@

$(BUILD_DIR)/$(CPP_OBJS): $(SRC_CPP)
@echo "========== [CPP] =========="
mkdir -p $(BUILD_DIR)
$(CPP) $(BFLAGS) -v -c $< -o $@

clean:
rm -rf $(BUILD_DIR)

b.cpp:

#include<iostream>
#include<string>
#include<cmath>
using namespace std;

int main()
{
string s;
int n;
std::cin>>n>>s;
std::cout<<"sqrt(n) = "<<sqrt(n)<<", s = "<<s<<endl;
}

奇怪的是C代码能编译正确,C++却不能,我终于弄明白是b.cpp中的cin和cout导致了这个错误,用scanf和printf编译就成功了“反而。但是我可以用gcc编译运行代码,所以代码不怪。

我尝试将 -lgcc_s 添加到 LDFLAGS,但它未包含在 NDK 中,ld 找不到它,我是否遗漏了什么?

最佳答案

use clang toolchains to compile my test code, but I got errors like this...

这超出了我的评论范围,但它没有回答问题。这将帮助您解决问题。

当使用 NDK 从命令行构建时,您必须使用与 NDK 相同的工具链和相同的命令行选项。你没有这样做,你的 C++ 标志确实与 Android 使用的不同。我所知道的所有 NDK 使用 --sysroot,C++ 源文件使用 -funwind-tables -fexceptions -frtti。 NDK r19 和 NDK r20 对 C++ 文件使用 -std=c++11。最新的 NDK 正在设置 __ANDROID_API__,例如 -D__ANDROID_API__=21

我从 Android 的命令行构建 Crypto++ 和 OpenSSL。当您使用与 NDK 相同的工具链和相同的命令行选项时,该过程有效。这是我构建 Crypto++ 的婴儿床笔记,这是另一个 C++ 库:Android_(Command_Line) .

您需要退后一步,克隆 Google 的 NDK 示例 GitHub, checkout android-mk 分支,然后构建 Hello World 程序。注意编译器选项。在您的项目中使用相同的编译器选项。

以下是执行克隆和构建示例的方式:

android$ git clone https://github.com/googlesamples/android-ndk
android$ cd android-ndk
android$ git checkout android-mk
android$ cd hello-jni

android:hello-jni$ ndk-build APP_PLATFORM=android-29 V=1
...

BFLAGS := --target=$(TARGET_ARCH) -O2 -std=gnu++98 \
-B$(TOOLCHAIN)/sysroot/usr/lib/aarch64-linux-android/29 \
-I$(TOOLCHAIN)/clang-include

是认真的吗? -std=gnu++98?

我希望那是测试遗留下来的 Artifact 。

您可能想查看一些 Andoid NDK 文档。也许从 C++ Library Support 开始. Android NDK r19 和 NDK r20 使用 LLVM 的 libc++。 GNU 装备不见了。如果您想要 GNU 设备,请退回到较小的 NDK,如 r12 或 r16。


(From the comments): This is a simple test, you can try it on your NDK environment if that's not too much to ask...

这并不简单。您必须设置环境、创建源文件并运行构建。您还缺少 a.* 文件。您应该提供一个 GitHub 存储库,其中包含一切设置和运行构建过程的脚本。


这是 NDK r19 和 android-28 的输出。请注意您的选项与 Google 使用的选项有多大不同。注意 [arm64-v8a] Compile 等行的详细信息。

android:hello-jni$ ndk-build APP_PLATFORM=android-28 V=1 clean &>/dev/null

android:hello-jni$ ndk-build APP_PLATFORM=android-28 V=1

Android NDK: WARNING: APP_PLATFORM android-28 is higher than android:minSdkVersion 3 in ./AndroidManifest.xml. NDK binaries will *not* be compatible with devices older than android-28. See https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md for more information.
rm -f ./libs/arm64-v8a/* ./libs/x86_64/* ./libs/armeabi-v7a/* ./libs/x86/*
rm -f ./libs/arm64-v8a/gdbserver ./libs/x86_64/gdbserver ./libs/armeabi-v7a/gdbserver ./libs/x86/gdbserver
rm -f ./libs/arm64-v8a/gdb.setup ./libs/x86_64/gdb.setup ./libs/armeabi-v7a/gdb.setup ./libs/x86/gdb.setup
[arm64-v8a] Gdbserver : [aarch64-linux-android] libs/arm64-v8a/gdbserver
install -p /opt/android-ndk-r19c/prebuilt/android-arm64/gdbserver/gdbserver ./libs/arm64-v8a/gdbserver
[arm64-v8a] Gdbsetup : libs/arm64-v8a/gdb.setup
echo "set solib-search-path ./obj/local/arm64-v8a" > ./libs/arm64-v8a/gdb.setup
echo "directory /opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/sysroot jni /opt/android-ndk-r19c/sources/cxx-stl/system" >> ./libs/arm64-v8a/gdb.setup
[x86_64] Gdbserver : [x86_64-linux-android] libs/x86_64/gdbserver
install -p /opt/android-ndk-r19c/prebuilt/android-x86_64/gdbserver/gdbserver ./libs/x86_64/gdbserver
[x86_64] Gdbsetup : libs/x86_64/gdb.setup
echo "set solib-search-path ./obj/local/x86_64" > ./libs/x86_64/gdb.setup
echo "directory /opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/sysroot jni /opt/android-ndk-r19c/sources/cxx-stl/system" >> ./libs/x86_64/gdb.setup
[armeabi-v7a] Gdbserver : [arm-linux-androideabi] libs/armeabi-v7a/gdbserver
install -p /opt/android-ndk-r19c/prebuilt/android-arm/gdbserver/gdbserver ./libs/armeabi-v7a/gdbserver
[armeabi-v7a] Gdbsetup : libs/armeabi-v7a/gdb.setup
echo "set solib-search-path ./obj/local/armeabi-v7a" > ./libs/armeabi-v7a/gdb.setup
echo "directory /opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/sysroot jni /opt/android-ndk-r19c/sources/cxx-stl/system" >> ./libs/armeabi-v7a/gdb.setup
[x86] Gdbserver : [i686-linux-android] libs/x86/gdbserver
install -p /opt/android-ndk-r19c/prebuilt/android-x86/gdbserver/gdbserver ./libs/x86/gdbserver
[x86] Gdbsetup : libs/x86/gdb.setup
echo "set solib-search-path ./obj/local/x86" > ./libs/x86/gdb.setup
echo "directory /opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/sysroot jni /opt/android-ndk-r19c/sources/cxx-stl/system" >> ./libs/x86/gdb.setup
[arm64-v8a] Compile : hello-jni <= hello-jni.c
rm -f ./obj/local/arm64-v8a/objs-debug/hello-jni/hello-jni.o
/opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF ./obj/local/arm64-v8a/objs-debug/hello-jni/hello-jni.o.d -target aarch64-none-linux-android28 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -Ijni -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c jni/hello-jni.c -o ./obj/local/arm64-v8a/objs-debug/hello-jni/hello-jni.o
[arm64-v8a] SharedLibrary : libhello-jni.so
/opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -Wl,-soname,libhello-jni.so -shared ./obj/local/arm64-v8a/objs-debug/hello-jni/hello-jni.o -lgcc -Wl,--exclude-libs,libgcc.a -latomic -Wl,--exclude-libs,libatomic.a -target aarch64-none-linux-android28 -no-canonical-prefixes -Wl,--build-id -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lc -lm -o ./obj/local/arm64-v8a/libhello-jni.so
[arm64-v8a] Install : libhello-jni.so => libs/arm64-v8a/libhello-jni.so
install -p ./obj/local/arm64-v8a/libhello-jni.so ./libs/arm64-v8a/libhello-jni.so
/opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-strip --strip-unneeded ./libs/arm64-v8a/libhello-jni.so
[x86_64] Compile : hello-jni <= hello-jni.c
rm -f ./obj/local/x86_64/objs-debug/hello-jni/hello-jni.o
/opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF ./obj/local/x86_64/objs-debug/hello-jni/hello-jni.o.d -target x86_64-none-linux-android28 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -Ijni -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c jni/hello-jni.c -o ./obj/local/x86_64/objs-debug/hello-jni/hello-jni.o
[x86_64] SharedLibrary : libhello-jni.so
/opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -Wl,-soname,libhello-jni.so -shared ./obj/local/x86_64/objs-debug/hello-jni/hello-jni.o -lgcc -Wl,--exclude-libs,libgcc.a -latomic -Wl,--exclude-libs,libatomic.a -target x86_64-none-linux-android28 -no-canonical-prefixes -Wl,--build-id -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lc -lm -o ./obj/local/x86_64/libhello-jni.so
[x86_64] Install : libhello-jni.so => libs/x86_64/libhello-jni.so
install -p ./obj/local/x86_64/libhello-jni.so ./libs/x86_64/libhello-jni.so
/opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-strip --strip-unneeded ./libs/x86_64/libhello-jni.so
[armeabi-v7a] Compile thumb : hello-jni <= hello-jni.c
rm -f ./obj/local/armeabi-v7a/objs-debug/hello-jni/hello-jni.o
/opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF ./obj/local/armeabi-v7a/objs-debug/hello-jni/hello-jni.o.d -target armv7-none-linux-androideabi28 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -mfpu=vfpv3-d16 -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -mfpu=neon -Ijni -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c jni/hello-jni.c -o ./obj/local/armeabi-v7a/objs-debug/hello-jni/hello-jni.o
[armeabi-v7a] SharedLibrary : libhello-jni.so
/opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -Wl,-soname,libhello-jni.so -shared ./obj/local/armeabi-v7a/objs-debug/hello-jni/hello-jni.o -lgcc -Wl,--exclude-libs,libgcc.a -latomic -Wl,--exclude-libs,libatomic.a -target armv7-none-linux-androideabi28 -no-canonical-prefixes -Wl,--build-id -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lc -lm -o ./obj/local/armeabi-v7a/libhello-jni.so
[armeabi-v7a] Install : libhello-jni.so => libs/armeabi-v7a/libhello-jni.so
install -p ./obj/local/armeabi-v7a/libhello-jni.so ./libs/armeabi-v7a/libhello-jni.so
/opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip --strip-unneeded ./libs/armeabi-v7a/libhello-jni.so
[x86] Compile : hello-jni <= hello-jni.c
rm -f ./obj/local/x86/objs-debug/hello-jni/hello-jni.o
/opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF ./obj/local/x86/objs-debug/hello-jni/hello-jni.o.d -target i686-none-linux-android28 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -Ijni -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c jni/hello-jni.c -o ./obj/local/x86/objs-debug/hello-jni/hello-jni.o
[x86] SharedLibrary : libhello-jni.so
/opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -Wl,-soname,libhello-jni.so -shared ./obj/local/x86/objs-debug/hello-jni/hello-jni.o -lgcc -Wl,--exclude-libs,libgcc.a -latomic -Wl,--exclude-libs,libatomic.a -target i686-none-linux-android28 -no-canonical-prefixes -Wl,--build-id -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lc -lm -o ./obj/local/x86/libhello-jni.so
[x86] Install : libhello-jni.so => libs/x86/libhello-jni.so
install -p ./obj/local/x86/libhello-jni.so ./libs/x86/libhello-jni.so
/opt/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android-strip --strip-unneeded ./libs/x86/libhello-jni.so

关于android - 使用 Android NDK 使用 clang++ 编译 C++ 代码时未定义对 `_Unwind_Resume' 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58553951/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com