回答
基本的にCMakeやautotoolsを使ってmakeなどを吐いてビルドするようなものは、makeだけではビルドしただけで、それをmake installするときにライブラリ・実行ファイル・ヘッダーファイル・manファイルなどを適切な位置に配置するようになっています。これは安全のために分けられていると考えることが出来ます。例えば適切な場所への配置にはroot権限が必要になるかもしれません。しかしビルド自体にそんな権限はいらないわけです。ビルド段階の様々なプロセスにまでroot権限を与えるのは必要以上に権限を与えておりあまり安全側に倒した行動とはいえません。
/usr
, /usr/local
, /mingw32
, /mingw64
, /opt/foo-x.y.z
, ~/
などなど、どこに配置するかをmakeを吐く段階(cmakeやconfigure)で与え(cmake -DCMAKE_INSTALL_PREFIX=<path>
/./configure --prefix=<path>
)、make install(べつにmakeじゃなくてninjaとかでもいいのだけど)した段階でその情報に基づく配置が行われます。
以下余談
このとき事後的にprefixに介入・・・というよりはprefixの場所に展開するという了解のもとにその構造を別の場所に書き出す、環境変数DESTDIR
を用いる例もありますが(これとかこれとか)、
コメント欄に言及のあったURLの先にも書かれていて
http://www.linuxfromscratch.org/lfs/view/development/chapter08/pkgmgt.html
(強調はyumetodoによるもの)
If you compile a package that links against libfoo, you may notice that it is linked to /usr/pkg/libfoo/1.1/lib/libfoo.so.1
instead of /usr/lib/libfoo.so.1
as you would expect. The correct approach is to use the DESTDIR strategy to fake installation of the package
コメントでも指摘のある通りパッケージを作るような限定的な条件でのみ使うものと考え忘れて構いません。