我正在尝试将一些可执行文件(使用 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 系统库 compiler_builtins-0.1.25/src/int/udiv.rs 中定义了两次的问题可能有人知道如何解决这个问题?
如果我将可执行文件与库作为共享对象链接,则链接成功,但我需要使用静态库进行编译!(货物构建同时生成.so和.a)
该线程(将 Rust staticlib 与嵌入式 C 程序链接时出现“`memcmp 的多重定义”错误)对我没有帮助。