linux shared library global/local functionを設定する方法
C++言語の関数を共有ライブラリとして作成する場合、linuxではデフォルトですべての関数がglobalで共有されてしまいます。そのため、共有したい関数/共有したくない関数を定義し共有ライブラリを作成する方法を記述します。 以下はRedhat 8.6環境で確認しました。 # cat test1.c #include <stdio.h> #include <stdlib.h> #define RETURN_VAL 1 int sub() { return RETURN_VAL; } extern int test1() { int rc = sub(); return rc; } # cat makefile.1.default # SRCDIR = . TARGETDIR = . TARGETLIB = $(TARGETDIR)/libtest1.so CODESRC = $(SRCDIR)/test1.c TARGETOBJ = $(TARGETDIR)/test1.o CC = g++ CCOPTIONS = -c -g -O0 -fPIC -Wno-deprecated -m64 -mtune=generic -mcmodel=small LIBCC = $(CC) LDOPTIONS = -shared -m64 RM = rm all: $(TARGETLIB) $(TARGETLIB): $(TARGETOBJ) $(LIBCC) $(LDOPTIONS) $(TARGETOBJ) -o $(TARGETLIB) $(TARGETOBJ): $(CODESRC) $(CC) $(CCOPTIONS) -c $(CODESRC) -o $(TARGETOBJ) clean: $(RM) $(TARGETLIB) $(TARGETOBJ) # make -f makefile.1.default g++ -c -g -O0 -fPIC -Wno-deprecated -m64 -mtune=generic -mcmodel=small -c ./test1.c -o ./test1.o g++ -shared -m64 ./te...