LoginSignup
0
1

More than 1 year has passed since last update.

make, configure, ビルド周りの知識を学ぶのにいい記事

Last updated at Posted at 2021-12-01

この記事最高! めっちゃわかりやすい。10年前の内容なのに、いまだに同じエラーが発生して同じ手順でトラシューできたりする。神。

「ビルド」という作業は何を指しているのか
https://atmarkit.itmedia.co.jp/ait/articles/1105/23/news128.html

第6回から10個くらい連続で読んだ。神だった。

さっとメモ

  • configure
    • Makefileを作る
    • 環境ごとに Makefileを変えるため。例えば gcc コマンドをintel特有の icc にしたりとか。
  • make
    • 実行ファイル (command) を作る
  • makeナニソレオイシイノ
    • a + b を作って a+b にしたいとき便利
    • a + c もほしいとき
      • cにtouch c すると、a+bは変わらず a+c だけ再コンパイルしてくれる
    • make は単純に生成物の コマンド と、要素のファイルの mod timeを比較してるだけ。コマンドより新しいファイルがあったら依存部分を再コンパイルする。
  • make install
    • Makefileのなかにある install: の行を実行してるだけ。実態はとあるパスに makeで作ったコマンドcpしたり、manual filesをcpしたりしてる
  • make clean
    • 作ったcommandや中間物であるところの .o ファイルを削除してきれいにする。もっかい makeすればそれらファイルは再作成される。
  • Makefile
    • .PHONY:clean ってすると、pwdに clean というファイルが有っても実行できる、ダミー要素。makeはfileを作成するためのものだけど、ただコマンドを実行したいだけのときに使う。
    • all:
      • 一般的に make内のものを全部まとめて実行するために用意されてる。 make all で実行される。
    • macro
      • Makefileの中にCC=gcc 書いておくとgccでbuildされる。デフォは gccのsymlinkのcc. CC=echo ってするとただ出力されるだけになったりする
      • CC=gcc make でも同じことが起こる

curl の 7.x.x が使いたいんじゃ!!っていうとき

curlが慣習的なbuildができると想定して書く(試してない

wget curl の tarball
tar xzvf
cd 
./configure --prefix=/opt/curl-7.x.x/          <------- /optに置くのが監修ぽい。バージョン名指定すると楽。
make 
make install
できたら、必ず ldd でlibがリンクされてるか確認する

ldd /opt/curl-x.x.x/bin/curl
curl version的な

condigureでコケる場合

ライブラリが足りない場合

yum search zlib

こんなんで探して、 yum insatll zlib zlib-devel を入れる。

-develは、こうしてbuildしたいときに使うヘッダファイル。makeするときは必須。

lddに問題ある場合は

LD_LIBRARY_PATH="/opt/curl-x.x.x/lib" /opt/curl-x.x.x/bin/curl

こうするとうまくいったりする

LD_LIBRARY_PATHはコマンドがlibを探すときに参照するパス。
defaultは /usr/lib , /usr/lib64 最近は64の方に大量に入ってる。
libを動的に参照する仕組みがdynamic linkで、ほとんどのコマンド/libがそうなってる

libから始まるのがそれ。
.so は static object だったっけ、なんだったけ

/usr/lib64 な中が symlinkだらけなのは、/usr/lib64でライブラリを共有してるけど、それだとバージョン依存壊れたときにだめじゃん。コマンドごとに違うバージョンどうやって使うの?ってのが、結局複数バージョンの .so を入れて、symlinkを参照するコマンドの数だけおいて、それぞれのコマンドが参照するのを切り替えてる。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1