Closed sakuei-ld closed 10 months ago
@sakuei-ld ありがとうございます! Fedoraでのビルドはノーマークでした、、、CI設定してもいいかもしれないですね。
ひとまずFedoraでの再現手順を教えていただけますでしょうか?(libpcscliteを〜という方法でインストールした、など)
@kazuki0824 ちょっと見落としてました。 Podman の Fedora-minimal イメージ でのサンプルになりますが、下記の順で実行してビルドしました。 自分の Containerfile では、sed のところで lib→lib64 に書き換えて、無理矢理対応した感じです。 通常の Fedora や CentOS の場合は、dnf でも通ると思います (試してないので、絶対とは言えませんが)。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
export PATH="/root/.cargo/bin:${PATH}"
dnf5 install -y git
dnf5 install -y gcc gcc-c++ make cmake pcsc-lite-devel clang-devel
git clone --recursive https://github.com/kazuki0824/recisdb-rs.git
cd recisdb-rs
sed -i 's/lib"/lib64"/' ./b25-sys/build.rs
cargo build --release
docker run -it --rm fedora:latest
にて
dnf install dnf5 dnf5-plugins
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
export PATH="/root/.cargo/bin:${PATH}"
dnf5 install -y git
dnf5 install -y gcc gcc-c++ make cmake pcsc-lite-devel clang-devel
git clone --recursive https://github.com/kazuki0824/recisdb-rs.git
cd recisdb-rs
sed -i 's/lib"/lib64"/' ./b25-sys/build.rs
cargo build --release
で再現しました。
println!("cargo:rustc-link-search=native={}/lib64", res.display());
の追加で修正します。
README.md に沿って実行した場合、下記errorが出て cargo build に失敗しました。 error: could not find native static library
aribb25
, perhaps an -L flag is missing? error: could not compileb25-sys
(lib) due to previous error; 2 warnings emitted64bit系 Fedora、CentOS系で、libaribb25 をインストールせずに始めると起こるものと思います。 (Debian、Ubuntu系は試してないので分かりません……)
下記で lib ディレクトリを指定しているのが原因のようです。 https://github.com/kazuki0824/recisdb-rs/blob/9e80c8cf05eaefd737c7247a8b4f9e334ce0f134/b25-sys/build.rs#L92 64bit系 Fedora で libaribb25 を make install した際、lib64 directory に配置されるため、 上記で適切にリンクできないのだと思います。 lib64 に書き換えたら、問題なく通りました。
一応、下記の追加でも通りましたので、暫定的には追記で大丈夫だと思います。
println!("cargo:rustc-link-search=native={}/lib64", res.display());
Rust分からないので、実際のところ問題が無いのか、までは分かりません……。 もしかすると、lib or lib64 を識別する必要があるかもしれません。