ffi working. got a feel for it

This commit is contained in:
talksik
2023-11-21 09:34:31 -08:00
parent 61a43bd732
commit 255c7b7fed
9 changed files with 36 additions and 3 deletions
+17 -3
View File
@@ -1,4 +1,4 @@
.PHONY: all clean test pipe named-pipe .PHONY: all clean test pipe named-pipe ffi
.ONESHELL: .ONESHELL:
all: clean all: clean
@@ -6,6 +6,11 @@ all: clean
sleep 1; sleep 1;
make test; make test;
make pipe; make pipe;
sleep 3;
make named-pipe;
sleep 3;
make ffi;
make clean;
test: test:
mkdir -p test; mkdir -p test;
@@ -15,20 +20,29 @@ test:
# note: below line stays in root dir because no `\` at the end of previous line # note: below line stays in root dir because no `\` at the end of previous line
rm -rf test; rm -rf test;
pipe: pipe: clean
cd pipe; cd pipe;
gcc test_pipe.c -o test_pipe_c_program; gcc test_pipe.c -o test_pipe_c_program;
go build -o test_pipe_go_program main.go; go build -o test_pipe_go_program main.go;
./test_pipe_go_program ./test_pipe_go_program
named-pipe: named-pipe: clean
cd named_pipe; cd named_pipe;
gcc test_named_pipe_receiver.c -o test_named_pipe_receiver_c_program; gcc test_named_pipe_receiver.c -o test_named_pipe_receiver_c_program;
go build -o test_named_pipe_sender_go_program main.go; go build -o test_named_pipe_sender_go_program main.go;
./test_named_pipe_receiver_c_program & ./test_named_pipe_sender_go_program; ./test_named_pipe_receiver_c_program & ./test_named_pipe_sender_go_program;
ffi: clean
cd ffi;
gcc -c -o example.o example.c;
ar rcs libexample.a example.o;
go build -o test_ffi_go_program main.go;
./test_ffi_go_program;
clean: clean:
echo "cleaning..." echo "cleaning..."
rm -rf pipe/test_pipe_c_program pipe/test_pipe_go_program rm -rf pipe/test_pipe_c_program pipe/test_pipe_go_program
rm -rf named_pipe/test_named_pipe_receiver_c_program named_pipe/test_named_pipe_sender_go_program rm -rf named_pipe/test_named_pipe_receiver_c_program named_pipe/test_named_pipe_sender_go_program
rm -rf ffi/main.o ffi/libmain.a ffi/test_ffi_go_program
+7
View File
@@ -0,0 +1,7 @@
// example.c
#include <stdio.h>
void helloFromC() {
printf("Hello from C!\n");
}
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+12
View File
@@ -0,0 +1,12 @@
package main
/*
#cgo LDFLAGS: -L./ -lexample
void helloFromC();
*/
import "C"
func main() {
print("Hello from Go! calling FFI for C\n")
C.helloFromC()
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.