Is there any way to tell Rust where to look for my static library? Example code
#[link(name = "/this/is/the/path/libfoo.a", kind = "static")]
If not, what config change can I make or what folder do I place my library in so that I can use it?
Is there any way to tell Rust where to look for my static library? Example code
#[link(name = "/this/is/the/path/libfoo.a", kind = "static")]
If not, what config change can I make or what folder do I place my library in so that I can use it?
To add on to the accepted answer, what worked for me is as following:
target/debug/deps
worked; but putting files undertarget/debug/native/*
did not seem to work.Cargo seems to only look under
target/debug/deps
by default.You can run with
cargo build --verbose
to see the verboserustc
commands and the options used.-L
option specifies additional link dependency directory.rustc
invokes the system linker which looks for all libraries specified in#[link(...)]
in library directories. There are usually several default library directories (like/lib
and/usr/lib
on Linux), and more can be specified via linker flags (rustc
accepts-L
options which it then passes through to the linker).If you invoke
rustc
directly, you can use the-L
option to add additional library directories which will be then passed through to the linker. If you use Cargo, however, you've got a few more options:Cargo adds the
/target/<profile>/deps
directory as a library source directory.You can use
cargo rustc
You can specify the
RUSTFLAGS
environment variable:You can use a build script to output more linker options
The easiest way for you, I think, is to add a custom build script which will copy or create a symlink to your library in the corresponding
/target/<profile>/deps
directory.