小编goa*_*iek的帖子

为什么 `cargo build` 成功,但 `cargo build --release` 因静态库中未定义的引用而失败?

我正在编写一个Rust CLI 工具,它使用我静态链接的 C 库。我按照bindgen教程开始使用,目前可以创建一个可以按预期与cargo build.

但是,当我尝试使用 构建项目时cargo build --release,我遇到了构建错误,表明我正在使用的外部 C 函数未定义,例如:

stumpless-logger/target/release/deps/libstumpless-292541b9e494f811.rlib(stumpless-292541b9e494f811.stumpless.7e987498-cgu.0.rcgu.o): In function `stumpless::FileTarget::new':
          stumpless.7e987498-cgu.0:(.text._ZN9stumpless10FileTarget3new17hef1370275727c33dE+0x82): undefined reference to `stumpless_open_file_target'
Run Code Online (Sandbox Code Playgroud)

nm显示调试和发布库构建在各自目标目录中的预期导出:

# first with the debug
stumpless-logger$ nm --defined-only target/debug/build/stumpless-sys-ca96d217a4e3d9db/out/lib/libstumpless.a | grep file
0000000000000000 T raise_file_open_failure
0000000000000000 T raise_file_write_failure
file.c.o:
0000000000000000 T destroy_file_target
0000000000000000 T file_open_default_target
0000000000000000 T new_file_target
0000000000000000 T sendto_file_target
0000000000000000 T stumpless_close_file_target
0000000000000000 T stumpless_open_file_target

# and now with the release
stumpless-logger$ nm --defined-only target/release/build/stumpless-sys-6f81199b96080c30/out/lib/libstumpless.a | grep …
Run Code Online (Sandbox Code Playgroud)

build linker-errors rust rust-cargo

7
推荐指数
1
解决办法
1329
查看次数

标签 统计

build ×1

linker-errors ×1

rust ×1

rust-cargo ×1