これが私が使用しているリポジトリです: https://github.com/Garuda1/unixlib
コンパイルしたlib(_unixlib.a
_)とヘッダー(_unixlib.h
_)をどこに置いて、lib(Linux-x86またはLinux-x86_64)を簡単に使用できるようにする必要があるかを知りたいです。コンパイルすることによって:
_$ gcc my_source.c -lunixlib
_
_my_source.c
_にヘッダーを含めます。
これをMakefile
に追加すると思います。
_install:
mv $(NAME).a $(LIB_PATH)
mv unixlib.h $(HEADER_PATH)
_
しかし、$(LIB_PATH)
と$(HEADER_PATH)
が何であるかはわかりません...
通常、UNIXシステムでは、ヘッダーは$PREFIX/include
に移動し、ライブラリファイルは$PREFIX/lib
に移動します。ここで、PREFIX
は/usr
または/usr/local
などです。 Linuxでは、ライブラリをこれらのディレクトリにインストールすると、gcc my_source.c -lunixlib
だけで必要に応じてgcc
によって検出されます。
PREFIX
環境変数は、そのプレフィックスを提供するためにさまざまなビルドツールで一般的に使用されます。
また、DESTDIR
変数を使用することをお勧めします。少なくともDebianパッケージツールで使用されます。
したがって、makefileは次のようになります。
#PREFIX is environment variable, but if it is not set, then set default value
ifeq ($(PREFIX),)
PREFIX := /usr/local
endif
install: unixlib.a
install -d $(DESTDIR)$(PREFIX)/lib/
install -m 644 unixlib.a $(DESTDIR)$(PREFIX)/lib/
install -d $(DESTDIR)$(PREFIX)/include/
install -m 644 unixlib.h $(DESTDIR)$(PREFIX)/include/
たとえば、提供されたDESTDIR
にディレクトリが存在しない場合に備えて、install -d ...
が使用されることに注意してください。
make
の非再帰的なテンプレートを見て、いくつかのヒントを見つけることもできます: https://github.com/igagis/prorab/blob/master/src/prorab.mk