Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Rust] macOS 向けの libcore.dylib の identification name を設定し直す #200

Merged
merged 1 commit into from
Jul 23, 2022

Conversation

PickledChair
Copy link
Member

@PickledChair PickledChair commented Jul 23, 2022

内容

macOS で cargo でビルドした libcore.dylib について、otool -D libcore.dylib で identification name を調べると

libcore.dylib:
/Users/runner/work/voicevox_core/voicevox_core/target/ターゲット名/release/deps/libcore.dylib

という、ビルド環境を反映した結果が返ってきます。これは自然ではないので修正します。

例えば libonnxruntime.1.11.1.dylib の場合、otool -D libonnxruntime.1.11.1.dylib で調べると

libonnxruntime.1.11.1.dylib:
@rpath/libonnxruntime.1.11.1.dylib

という結果となります。このように、配布する動的ライブラリの identification name は @rpath/ファイル名 とするのが良さそうなので、このように設定しなおす処理を追加しました。

関連 Issue

ref #128

@qwerty2501
Copy link
Contributor

ここにあるようにCargo.tomlのrustflagsをmacos時に設定する方法だとだめですかね?
https://users.rust-lang.org/t/dynamic-libraries-and-prefer-dynamic-on-macos/18272/5

Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

cargo buildの方の設定でこの操作をする方法があるかと思って調べたのですが、よくわかりませんでした・・・。

@qwerty2501
Copy link
Contributor

[target.'cfg(target_os = "macos")']
rustflags = ["-C", "link-arg=-Wl,-rpath"]

こんな感じですかね

@PickledChair
Copy link
Member Author

[target.'cfg(target_os = "macos")']
rustflags = ["-C", "link-arg=-Wl,-rpath"]

こんな感じですかね

試してみます!

@PickledChair
Copy link
Member Author

PickledChair commented Jul 23, 2022

ちょっと試してみたのですが、うまくいっていません……rustflagsについて詳しくないので変なことを書いているかもしれませんが、試したことを以下に並べます:

  • Cargo.toml に先ほどの記述を追加: unused manifest key: target.cfg(target_os = "macos").rustflags という警告が出て効果がありませんでした
  • voicevox_core/crates/voicevox_core ディレクトリに .cargo/config.toml を追加し、そこに記載:警告が出なくなりましたが、ビルド結果は変わりませんでした
  • 記述内容を変更:今回の問題は rpath ではなく id name なので、rustflags = ["-C", "link-arg=-Wl,-rpath"] ではなくrustflags = ["-C", "link-arg=-Wl,-install_name,@rpath/libcore.dylib"] と記述してみた:これも効果なしでした

ということで私の知識ではちょっと難しそうでした……

@qwerty2501
Copy link
Contributor

@PickledChair configファイルでしたね・・・。
これ以上調べてもあまり良い情報を見つけられなさそうですね

Copy link
Contributor

@qwerty2501 qwerty2501 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Hiroshiba Hiroshiba merged commit 8df0774 into VOICEVOX:rust Jul 23, 2022
qwerty2501 pushed a commit to qwerty2501/voicevox_core that referenced this pull request Jul 23, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants