当前位置: 首页 > 知识库问答 >
问题:

libgcc和Rust系统库中`__udivti3'的多重定义

戚俊健
2023-03-14

我试图将一些可执行文件(用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中,一些低级处理器数学函数定义了两次的问题,可能有人知道如何解决这个问题?

这个线程(“在链接Rust staticlib和嵌入式C程序时对`memcmp”错误的多重定义)对我没有帮助。

共有1个答案

谭曦
2023-03-14

如果函数__udivti3的两个版本是等效的,那么可以尝试用-wl,--allog-multiple-definition链接程序。这显然是一个丑陋的黑客,我会有兴趣得到一个适当的解决方案,但它为我工作。在__muloti4上,compiler-builtins板条箱(标准库的一部分)和LLVMlibc++的静态版本之间发生了类似的冲突。

显然,我假设使用CDYLIB不适合您,并且您的Rust库需要是静态的。

 类似资料:
  • 主要内容:计算机系统的结构,操作系统做什么?在计算机系统(包括硬件和软件)中,硬件只能理解机器代码(以和的形式代码),这对于一般的用户来说没有任何意义。 我们需要一个可以充当中介的系统,并管理系统中存在的所有进程和资源。 操作系统可以被定义为用户和硬件之间的接口。 它负责执行所有进程,资源分配,CPU管理,文件管理和许多其他任务。 操作系统的目的是提供一种用户可以方便有效地执行程序的环境。 计算机系统的结构 计算机系统包括: 用户(使用电脑

  • rust新手,看到隐式重借用,有些不解,望能够帮忙解答。 下面代码都是重复可变引用,但为什么通过隐式重借用方式,就可以实现多个可变引用?rust不是明确说同一时间只能有一个可变引用吗?

  • 我有一个字符串数组,我想调用Reterfit这么多次,因为这个数组的大小实际上是。但是现在,尽管我在这个循环中声明了loop并调用了referfit,但当我在调试模式下运行时,我看到我的应用程序从来没有在ApiHit方法中输入onRespons,除非他到达for循环的结尾。然后finnaly,他在每个循环迭代中做我想做的事情(输入到onResponse并执行我的其余代码,其中包括)。现在每个迭代调

  • 我有三种型号:发票、发票项和产品。 每个发票都与Invoiceitems模型有许多关系。 每个发票项目与产品模型有一个关系。 我需要计算产品类别为4的Invoiceitem产品金额的总和。 表结构 发票 id |日期|总金额| 发票项目 id|发票|product_id|product_amt|数量|total_amt 产品 ID|product_name|category_id 关系 发票模型

  • 在parseConfiguration方法中我们通过propertiesElement和settingsAsProperties两个方法已经完成了对mybatis属性配置的解析和准备工作。 //issue #117 read properties first // 加载资源配置文件,并覆盖对应的属性[properties节点] propertiesElement(root.evalNode("

  • 在Java /Swing应用程序中,我们将System.out和System.err重定向到一个单独的视图(称为“SystemOutView”),当新的输出出现时,该视图会弹出打开。这对于抛出的异常和都很有效。这个视图可以通过属性文件进行配置(即它是否处于活动状态,以及它是否在输出时弹出打开)。 在这个项目中,我们使用log4j 1.2.15。我发现log4j输出,即使发送到STDOUT,也不会被