gpt4 book ai didi

rust - libgcc和Rust系统库中 `__udivti3'的多个定义

转载 作者:行者123 更新时间:2023-12-03 11:37:27 25 4
gpt4 key购买 nike

我正在尝试将某些可执行文件(使用gcc编译)与使用cargo build编译的库链接。

cargo用用Rust语言编写的代码生成.a和.so库。

链接错误为:

/sharedhome/maxaxe01/mbed-cloud-client-example-internal/mbed-cloud-client/parsec-se-driver/target/debug/libparsec_tpm_direct_se_driver.a(compiler_builtins-2541f1e09df1c67d.compiler_builtins.dh9snxly-cgu.0.rcgu.o): In function `__udivti3':
/cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.25/src/int/udiv.rs:247: multiple definition of `__udivti3'
/usr/lib/gcc/x86_64-linux-gnu/7/libgcc.a(_udivdi3.o):(.text+0x0): first defined here
collect2: error: ld returned 1 exit status

据我了解,一些低级处理器数学函数在我的libgcc和RUST系统库中定义了两次,这个问题可能是有人对如何解决这个问题有所了解?

如果我将可执行文件与库作为共享库链接,则它已成功链接,但是我需要使用静态lib进行编译! ( cargo 生成同时生成.so和.a)

此线程( "multiple definition of `memcmp" error when linking Rust staticlib with embedded C program)对我没有帮助。

最佳答案

如果__udivti3函数的两个版本相同,则可以尝试将程序与-Wl,--allow-multiple-definition链接。这显然是一个丑陋的hack,我很想获得一个合适的解决方案,但是它对我有用。在__muloti4 crate (标准库的一部分)和LLVM静态版本compiler-builtins之间,我在libc++上遇到了类似的冲突。
显然,我假设您不愿意使用cdylib,并且您的Rust库必须是静态的。

关于rust - libgcc和Rust系统库中 `__udivti3'的多个定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61931313/

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