Macで.soファイルを試してみた。
ほぼ手順通りだが、Linuxでなく、Macが故にうまく行かない部分があったのでメモ。
その1
- sonameの代わりにinstall_name
- これはうまく行かない
- gcc -shared -Wl,-soname,libhello.so libhello.lo -o libhello.so
- 代わりにこれを実行
- gcc -shared -Wl,-install_name,libhello.so libhello.lo -o libhello.so
- ldconfigは不要
- これはうまく行かない。というより不要
- ldconfig -n .
- 不要な理由は以下を参考
その2
- javahはjdk10や11では使えなさそう
- java8に切り替えて試した
- javahが使えないと理解した元の情報
- .soでなく、.jnilibを作成
https://stackoverflow.com/questions/761639/why-am-i-getting-this-unsatisfiedlinkerror-with-native-code
- これだとこの後の手順でエラーが出る
- gcc -fPIC -shared hello.c -I /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/include -I /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/include/darwin/ -o libhello.so
- こちらに変更
- gcc -fPIC -shared hello.c -I /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/include -I /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/include/darwin/ -o libhello.jnilib