AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题

问题[gcc](coding)

Martin Hope
Oh Fiveight
Asked: 2025-04-16 08:22:42 +0800 CST

使用 gcc 在 GNU/Linux 上使用共享库

  • 5

主要问题

我在 GNU/Linux 上将 C 代码输出到共享库bin/libcore.so,然后使用该库创建可执行文件bin/test。文件已成功创建,但bin/test运行时出现以下错误:

bin/test: error while loading shared libraries: libcore.so: cannot open shared object file: No such file or directory

子问题

将其分离成一个单独的问题,因为它可能完全偏离了正确的轨道。

我读到我的问题可能是因为我需要-Wl,-rpath,bin在构建时进行设置bin/test(我必须经历类似的过程才能使其在 Windows 上工作,即设置-Wl,-out-implib,bin/libcore.dll.a)。

我LDFLAGS通过以下方式传递给我的 Makefile:

make -f build/Makefile  PLATFORM="linux" \
                        TARGET="bin/libcore.so" \
                        LDFLAGS="-shared" \
                        ... \

并且在中build/Makefile,我有以下几行引用LDFLAGS:

# Linker flags.
ifeq ($(PLATFORM),linux)
    LDFLAGS += -Wl,-rpath,bin
endif
ifeq ($(suffix $(TARGET)),.dll)
    LDFLAGS += -Wl,--out-implib,$(dir $(TARGET))lib$(basename $(notdir $(TARGET))).dll.a
endif

# Build target.
$(TARGET): $(OBJ_FILES)
    $(CC) -o $@ $^ $(LDFLAGS)

但是当我尝试运行 Makefile 时,我得到:

LDFLAGS += -Wl,-rpath,bin
make[1]: LDFLAGS: No such file or directory

解决方案

正如已接受的答案所指出的,我的 Makefile 语法不正确。此外,我已将其更新为 ,rpath而$$ORIGIN不是 ,bin以避免答案中描述的问题。以下是可以运行的 Makefile:

# Additional linker flags.
EXTRA_LDFLAGS :=
ifeq ($(PLATFORM),linux)
EXTRA_LDFLAGS := -Wl,-rpath,'$$ORIGIN'
endif
ifeq ($(suffix $(TARGET)),.dll)
EXTRA_LDFLAGS := -Wl,--out-implib,$(dir $(TARGET))lib$(basename $(notdir $(TARGET))).dll.a
endif

# Build target.
$(TARGET): $(OBJ_FILES)
    $(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS)
gcc
  • 1 个回答
  • 30 Views
Martin Hope
Coarse Rosinflower
Asked: 2025-04-02 07:02:32 +0800 CST

m4:无法打开‘gcc’:没有此文件或目录

  • 5

我正在尝试使用 Cygwin64 在 Windows 上构建 GMP。我运行./configure没有遇到任何问题,但make打印了一些无意义的内容:

C:/cygwin64/bin/sh.exe ../libtool --mode=compile --tag=CC ../mpn/m4-ccas --m4="m4" gcc -c -DHAVE_CONFIG_H -I. -I..  -D__GMP_WITHIN_GMP -I.. -DOPERATION_`echo invert_limb_table | sed 's/_$//'`   -O2 -pedantic -fomit-frame-pointer -m64 -mtune=k8 -march=k8  `test -f 'invert_limb_table.asm' || echo './'`invert_limb_table.asm
libtool: compile:  ../mpn/m4-ccas "--m4=m4 gcc" -c -DHAVE_CONFIG_H -I. -I.. -D__GMP_WITHIN_GMP -I.. -DOPERATION_invert_limb_table -O2 -pedantic -fomit-frame-pointer -m64 -mtune=k8 -march=k8 invert_limb_table.asm -o invert_limb_table.o
m4 gcc  -DHAVE_CONFIG_H -D__GMP_WITHIN_GMP -DOPERATION_invert_limb_table invert_limb_table.asm >tmp-invert_limb_table.s

在打印m4: cannot open `gcc': No such file or directory和出错之前。这很奇怪,因为我肯定安装了 GCC,我能够运行 证实了这一点gcc。这里发生了什么,我该如何修复它?

gcc
  • 1 个回答
  • 20 Views
Martin Hope
Eugene Sh.
Asked: 2025-02-07 22:36:37 +0800 CST

gcc 使用 `-static-pie` 生成什么样的可执行文件?

  • 6

这个问题特定于(但不限于)裸机 Risc-V 代码,我试图了解编译位置无关的固件二进制文件需要什么。我尝试编译一些简单的代码,并传递-fpie给链接器,看起来生成的二进制文件是一个独立的位置无关的可执行文件,包含、部分,以及代码中看似 onlu的相对引用。文档相当晦涩,很少提到具体选项。大多数/文档都在讨论动态重定位。我是否正确地认为,使用这个选项,生成的二进制文件是一个真正的位置无关的可执行文件,它不需要加载程序(或者根本不需要任何加载程序,假设它以某种方式进入可执行内存)的任何特殊重定位逻辑。还是我遗漏了什么?gcc-static-pie.got.got.pltpc-static-piepiepic

gcc
  • 1 个回答
  • 27 Views
Martin Hope
Kevin Meier
Asked: 2024-12-22 05:36:36 +0800 CST

AVX2 / gcc:通过使用不同的寄存器来提高 CPU 级并行性

  • 7

我有这个代码:

__attribute__((target("avx2")))
size_t lower_than_16(const uint64_t values[16], uint64_t x)
{
    __m256i vx = _mm256_set1_epi64x(x);
    __m256i vvals1 = _mm256_loadu_si256((__m256i*)&values[0]);
    __m256i vvals2 = _mm256_loadu_si256((__m256i*)&values[4]);
    __m256i vvals3 = _mm256_loadu_si256((__m256i*)&values[8]);
    __m256i vvals4 = _mm256_loadu_si256((__m256i*)&values[12]);
    __m256i vcmp1  = _mm256_cmpgt_epi64(vvals1, vx);
    __m256i vcmp2  = _mm256_cmpgt_epi64(vvals2, vx);
    __m256i vcmp3  = _mm256_cmpgt_epi64(vvals3, vx);
    __m256i vcmp4  = _mm256_cmpgt_epi64(vvals4, vx);
    const int mask = (_mm256_movemask_pd((__m256d)vcmp1)) |
                    (_mm256_movemask_pd((__m256d)vcmp2) << 4) |
                    (_mm256_movemask_pd((__m256d)vcmp3) << 8) |
                    (_mm256_movemask_pd((__m256d)vcmp4) << 12);
    if (mask != 0xFFFF) {
        // found
        return __builtin_ctz(~mask);
    }

    return 16;
}

基本上,给定一个包含 16 个元素的数组,我想找到第一个为真的元素的索引values[i] <= x。如果找不到元素,则返回 16。

这是使用 AVX2 实现的,我使用 gcc 作为编译器。汇编代码如下:

lower_than_16:
        vmovq   xmm2, rsi
        vmovdqu ymm1, YMMWORD PTR [rdi]
        vpbroadcastq    ymm0, xmm2
        vpcmpgtq        ymm1, ymm1, ymm0
        vmovmskpd       esi, ymm1
        vmovdqu ymm1, YMMWORD PTR [rdi+32]
        vpcmpgtq        ymm1, ymm1, ymm0
        vmovmskpd       eax, ymm1
        vmovdqu ymm1, YMMWORD PTR [rdi+64]
        sal     eax, 4
        vpcmpgtq        ymm1, ymm1, ymm0
        vmovmskpd       ecx, ymm1
        vmovdqu ymm1, YMMWORD PTR [rdi+96]
        sal     ecx, 8
        vpcmpgtq        ymm0, ymm1, ymm0
        or      eax, ecx
        or      eax, esi
        vmovmskpd       edx, ymm0
        sal     edx, 12
        or      eax, edx
        mov     edx, 16
        cmp     eax, 65535
        je      .L1
        not     eax
        xor     edx, edx
        rep bsf edx, eax
.L1:
        mov     rax, rdx
        vzeroupper
        ret

(可在此处查看: https: //godbolt.org/z/7eea39Gqv)

我看到gcc每次展开迭代都使用相同的寄存器。但是,如果每次展开迭代都使用不同的寄存器,效率会不会更高ymm,因为这样 CPU 就可以更轻松地并行执行这 4 个独立的比较?我知道 CPU 会进行一些寄存器重命名,但它是否足够智能,不会强制这些指令不并行执行?或者,如果使用不同的寄存器,会不会更容易/更高效?

多谢

gcc
  • 1 个回答
  • 28 Views
Martin Hope
Jackson Kidwell
Asked: 2024-12-21 10:52:56 +0800 CST

跳转重新加载代码段后 32 位操作系统崩溃

  • 6

以下是重置段的代码:

global reloadSegments

section .text
    reloadSegments:
       ; Reload the CS register with an offset of 0x08
       jmp 0x08:.reload_CS
    .reload_CS:
       ; Reload data segment registers
       mov ax, 0x10
       mov ds, ax
       mov es, ax
       mov fs, ax
       mov gs, ax
       mov ss, ax
       ret

跳转本身就是导致操作系统崩溃的原因。以下是加载 gdt 的代码:

void lgdt(void* gdt, uint16_t size) {
    gdtr.base = (uint32_t)gdt;
    gdtr.limit = size-1;
    asm __volatile__("lgdt (%0)" : : "r" (&gdtr));
}

基数是 32 位值,而极限是 16 位。下面是我调用两个函数并填充 gdt 的地方:

void initGdt() {
    create_descriptor(0, 0, 0, 0);
    create_descriptor(1, 0, 0x000FFFFF, (GDT_CODE_PL0));
    create_descriptor(2, 0, 0x000FFFFF, (GDT_DATA_PL0));
    create_descriptor(3, 0, 0x000FFFFF, (GDT_CODE_PL3));
    create_descriptor(4, 0, 0x000FFFFF, (GDT_DATA_PL3));

    lgdt(&gdt, sizeof(gdt)-1);
    extern void reloadSegments();
    reloadSegments();
}

创建描述符的函数和常量均来自 osdev.org 上的 gdt 教程。我使用 QEMU 作为具有多重引导的虚拟机。以下是该项目的 github 链接:https ://github.com/Wardence1/Basic_OS

我希望 os 能够成功跳转到 reload_CS 标签并重新加载 cs 寄存器,而不会出现问题。在此先感谢您的帮助!

gcc
  • 1 个回答
  • 60 Views
Martin Hope
T. Jastrzębski
Asked: 2024-12-06 20:41:32 +0800 CST

了解 GCC 链接器命令(-Wl 和 --start-group)

  • 6

链接对象ST 的CubeIDE 发出如下命令:

arm-none-eabi-g++ -mcpu=cortex-m33 --specs=nosys.specs -Wl,-Map=mymap.map -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv5-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -lstdc++ -lsupc++ -Wl,--end-group -Tmyldscript.ld @myobjects.txt -o myelf.elf

我试图理解为什么他们使用-Wl多次和--start-group/ --end-group。这样做有什么正当理由吗?这个命令可以简化吗?

gcc
  • 1 个回答
  • 21 Views
Martin Hope
Antonio
Asked: 2024-10-30 22:04:06 +0800 CST

avr-gcc ATmega4809 的 `.rodata` 部分存在问题

  • 6

(这是该问题的后续内容)

以下程序无法运行(在ATmega4809)

#include <avr/io.h>


void f(const char str[])
{
    if (str[0] == 'a')  // <-- here is the problem. The program thinks that str[0] != 'a'
        PORTC.OUT |= PIN0_bm;
    
     else 
        PORTC.OUT &= ~PIN0_bm;
   
}

const char str[] = "abc"; // this string the compiler stores in the .rodata section

int main()
{
    PORTC.DIR |= PIN0_bm;

    while (1) { f(str); }
}

问题是编译器str在该.rodata部分中写入。

str如果我改变强制编译器将其写入部分中的定义 .data:

const char str[] __attribute__((section(".data")))  = "abc";

该程序有效。

(您可以在我之前的问题中看到所有详细信息)

我的问题是:

  1. 我怎样才能强制编译器将所有 const 字符串写入该.data部分以使我的程序能够正常工作?

  2. 这是avr-gcc13.3.0 中的一个错误吗?

gcc
  • 1 个回答
  • 20 Views
Martin Hope
sancho.s ReinstateMonicaCellio
Asked: 2024-10-26 01:20:46 +0800 CST

make 给出 gcc:权限被拒绝 - 错误 127

  • 5

我正在执行make。在某个时候,它会进入src并从那里尝试编译几个子目录中的源代码。它给出

gcc -x c++ -ggdb -ansi -pedantic -iquote/home/user1/code -Wall -Wcast-align -Wcast-qual -Wnested-externs -Wpointer-arith -Wmissing-prototypes -Wstrict-prototypes -Wshadow -fno-common -Dinline=  -Wvariadic-macros  -iprefix /home/user1/code/src/ -iwithprefix . -iwithprefix DataSet -iwithprefix Outputs -iwithprefix Solver -iwithprefix Tools -iwithprefix Models -iwithprefix Modules -iwithprefix Help -iwithprefix Common   -iwithprefix Main -fPIC -fpermissive -c Common/Buffer.c -o Common/Buffer.o
make[1]: gcc: Permission denied
make[1]: *** [Makefile:140: Common/Buffer.o] Error 127

但如果执行(复制粘贴回显的命令)

$ cd src
$ gcc -x c++ -ggdb -ansi -pedantic -iquote/home/user1/code -Wall -Wcast-align -Wcast-qual -Wnested-externs -Wpointer-arith -Wmissing-prototypes -Wstrict-prototypes -Wshadow -fno-common -Dinline=  -Wvariadic-macros  -iprefix /home/user1/code/src/ -iwithprefix . -iwithprefix DataSet -iwithprefix Outputs -iwithprefix Solver -iwithprefix Tools -iwithprefix Models -iwithprefix Modules -iwithprefix Help -iwithprefix Common   -iwithprefix Main -fPIC -fpermissive -c Common/Buffer.c -o Common/Buffer.o

它编译得很好。

可能的原因和解决办法是什么?

gcc
  • 2 个回答
  • 18 Views
Martin Hope
Steven Dickinson
Asked: 2024-09-27 00:22:30 +0800 CST

链接到具有相同符号的多个库时出现问题

  • 6

我有 2 个共享对象库,例如libA.so和libB.so。我有一个可执行文件,它从这两个库中调用函数,例如funcA()来自libA和funcB()来自libB。

不幸的是,libA和都libB具有一些使用相同符号名称的其他函数,例如libA具有函数f1()和f2()并且libB还具有函数f1()和。请注意,libA和libB之间的和的f2()实现完全不同,它们只是同名而已。f1()f2()

可执行代码从来不会直接调用f1()或f2(),当然libA应该只调用它的f1()& f2(),并且libB应该只调用它的f1()和f2()。

但是,似乎出了点问题,我在运行可执行文件时遇到了段错误。

我对此有一个解决方案,即在构建libA和时使用“version.script” libB,这样只公开外部 API 函数(即名为“func*”的函数),即以下脚本...

{
    global: func*;
    local: *; 
};

...并-Wl,--version-script=version.script在与 gcc 链接时使用。

这是可行的,但它确实给我带来了麻烦,因为我必须使用第三方工具链,这使得使用此 version.script 方法变得复杂(即 hacky)。

libA有没有更好/其他的方法?(注意,我确实有和的源代码libB,因此可以更改符号名称,但不喜欢,因为此代码是由第三方工具自动生成的,而且我并不想进入并编辑所有名称。当然,真正的代码不仅仅是和,f1()而是f2()数百个类似名称的符号)。

另外,我想了解问题的根本原因?我假设libA(或libB)对应该调用哪个f1()或感到“困惑” f2(),但为什么——由于libA和libB都是单独编译的——我怀疑这与共享对象库有关?

以防万一...库和可执行文件的源代码是 C,并使用 gcc 进行编译和链接,这是在 Linux 上。

gcc
  • 1 个回答
  • 27 Views
Martin Hope
Mark
Asked: 2024-09-03 16:21:28 +0800 CST

Buildroot 无法编译 host-heimdal

  • 4

这是我defconfig稍加修改的configs/raspberrypi3_64_defconfig:

$ cat defconfig 
BR2_aarch64=y
BR2_cortex_a53=y
BR2_ARM_FPU_VFPV4=y

# patches
BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches"
BR2_DOWNLOAD_FORCE_CHECK_HASHES=y

BR2_SYSTEM_DHCP="eth0"

# Linux headers same as kernel, a 6.6 series
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y

BR2_TOOLCHAIN_BUILDROOT_CXX=y

BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,576cc10e1ed50a9eacffc7a05c796051d7343ea4)/linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz"
BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi3"
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi-3-b-plus broadcom/bcm2710-rpi-cm3"

BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y

BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y
BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y
BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi3-64/config_3_64bit.txt"

# Required tools to create the SD image
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y

# Filesystem / image
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_ROOTFS_EXT2_SIZE="120M"
# BR2_TARGET_ROOTFS_TAR is not set
BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3-64/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3-64/post-image.sh"

# Enable compressed kernel module support
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_KMOD_TOOLS=y
BR2_PACKAGE_XZ=y
BR2_PACKAGE_KMOD=y
BR2_PACKAGE_HOST_KMOD_XZ=y

发出make,这是输出的最后几行:

checking for library containing yywrap... -ll
checking for gawk... (cached) gawk
checking for ln -s or something else... ln -s
checking for __attribute__... no
checking for ld --version-script... yes
checking whether C compiler accepts -Wno-error=enum-conversion... yes
checking whether C compiler accepts -Wno-unused-but-set-variable... yes
checking for openldap... no
checking pkg-config is at least version 0.9.0... yes
checking for MICROHTTPD... no
checking for CJWT... no
checking for CJSON... no
checking for sqlite3... no
checking for libintl... no
checking for crypto library... included libhcrypto
checking if compiling threadsafe libraries... yes
checking for inline... inline
checking for an ANSI C-conforming const... yes
checking for size_t... no
checking for egrep... (cached) /usr/bin/grep -E
checking for pid_t... no
checking for uid_t... no
checking for gid_t... no
checking return type of signal handlers... void
checking for standards.h... no
checking for netinet/ip.h... no
checking for netinet/tcp.h... no
checking for egrep -e... (cached) /usr/bin/grep -E
checking for /home/mark/dev/buildroot/output/host/bin/ccache /usr/bin/gcc  options needed to detect all undeclared functions... cannot detect
configure: error: in '/home/mark/dev/buildroot/output/build/host-heimdal-f4faaeaba371fff3f8d1bc14389f5e6d70ca8e17':
configure: error: cannot make /home/mark/dev/buildroot/output/host/bin/ccache /usr/bin/gcc  report undeclared builtins
See 'config.log' for more details
make[1]: *** [package/pkg-generic.mk:279: /home/mark/dev/buildroot/output/build/host-heimdal-f4faaeaba371fff3f8d1bc14389f5e6d70ca8e17/.stamp_configured] Errore 1
make: *** [Makefile:83: _all] Errore 2

我搜索了xconfig工具内部host-heimdal,但什么也没找到。为什么会失败?我的意思是,我没有更改其配置。

更新

  • Buildroot版本:2024.08-rc3
  • 下载方法:git clone
  • 主机版本:Ubuntu 24.04
gcc
  • 1 个回答
  • 18 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve