对不起,如果以前已回答过此问题,但我阅读了类似的问题,而这些解决方案未能解决我的问题。我想将自定义.c文件链接到Ubuntu OS上的Rust项目。我阅读了Bindgen教程,并能够成功构建和运行它,因此我知道我的工具链能够将extern C文件链接到Rust程序。 Bindgen成功生成了bindings.rs文件,因此没有问题。尝试使用以下命令时出现以下错误:
cargo build
。
= note: /bin/ld: cannot find -ltest
collect2: error: ld returned 1 exit status
基本上,我做了一个非常简单的C文件(test.c),其中包含1个简单函数。然后,我构建.so文件(libtest.so)并创建我使用的.config文件
sudo ld config
和
sudo ld config -v
并确认我的图书馆对ld可见:
/home/fred/mylib:
libtest.so.1 -> libtest.so.1
我将.toml与成功运行的示例中的.toml进行了比较,它们看起来相同。
我最初在bindgen示例中遇到了这个问题,并通过正确的方式下载dev库来解决了这个问题
sudo apt-get install libbz2-dev
不是从压缩包中提取文件,所以我确信问题是我丢失了文件或将其放在错误的位置,但是我对文件的内容感到很困惑。