詳解UNIXプログラミングのコードをコンパイルして動作させるまで
C言語系の知識が全然なかったのでしばらく動かし方がわからなかったのだけれど,
ここ にとても丁寧な解説があった.
ちなみに,今回はVagrantでubuntuの仮想環境を用意してそこで試した.
Macでも動作させることができるのかもしれないのだけれど試していない.
今回はそのあたりも含めての覚書.
ubuntu環境の構築
Vagrantでサクッと用意.
gccとlibbsd-devが必要.gccは最初から入ってたかも?
$script = <<SCRIPT
echo "alias lsa='ls -ltrA'" >> /home/vagrant/.bashrc
echo "alias lstr='ls -ltr'" >> /home/vagrant/.bashrc
sudo apt-get install -y gcc libbsd-dev
SCRIPT
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "hashicorp/precise32"
config.vm.provision "shell", inline: $script
end
apue.3eのソースコードをDL
http://www.apuebook.com/ からもってくる.
ubuntuとファイル共有しておくと楽そうだったので,Vagrantfileがあるところへ.
make
この手順が抜けていた.言われれば当たり前なのだけれど...
ubuntu側にログインしてDLしたファイルを解凍 && make
makeしたときに cannot find -lbsd
がでたので,
libbsd-dev
をインストール.
Vagrantfileに設定を追記して vagrant provision
するだけ.
ソースコードをコンパイル
コンパイルオプションもちゃんとつける
$ gcc -o myls myls.c -I apue.3e/include/ -L apue.3e/lib/ -lapue
Iがinlude,Lがlibの指定,一番最後のlはlibxxx.soのxxxを見つけてくるための設定…?このあたりあんまりわかっていないのでまた今度調べる.