Call C code from Rust

Golangにつづき、重要言語であるRustについてもCとのインターフェイスを調べてみました。

「Call C code from Golang」

Call C code from Golang

環境)
gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
rustc 1.69.0 (84c898d65 2023-04-16)

hello.c

callc.rs

$ gcc -o hello.o -c hello.c
$ ar rcs libhello.a hello.o
$ rustc -L. callc.rs
$ ./callc
hello!

hello.rs

callrs.c

$ rustc hello.rs
$ gcc -o callrs.o -c callrs.c
$ gcc -o callrs callrs.o -L. -lhello
$ ldd callrs
linux-vdso.so.1 (0x00007ffcecfcb000)
libhello.so => not found
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f96a0efc000)
/lib64/ld-linux-x86-64.so.2 (0x00007f96a110a000)
$ LD_LIBRARY_PATH=. ./callrs
hello!

引数についてもテストしたかったのですが、ここまででもバージョンによるオプション違いとか、いろいろと迷うところがあったため、まずは自環境での動作を確認する意味でここまでとしました。
rustよびだしは、shared objectなります。(libhello.so) また最小限のやり方を試す意味で rustcを直接使用しました。

参考)https://mmi.hatenablog.com/entry/2017/02/28/213656

About

Categories: 未分類 タグ: